(node:2420) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: ENOENT: no such file or directory, open 'C:UsersxyhDesktopnodejstestreadbc.txt'
const fs = require('fs');
new Promise(function(resolve, reject) {
fs.mkdir('./read', (err) => {
if (err) {
reject(err);
} else {
resolve();
}
})
}).then(function() {
new Promise(function(resolve, reject) {
fs.writeFile('./read/c.txt', 'hello', (err) => {
if (err) {
reject(err);
} else {
resolve();
}
})
})
}).then(function() {
new Promise(function(resolve,reject){
fs.mkdir('./read/b',(err)=>{
if(err){
reject(err);
}else{
resolve();
}
})
})
}).then(function(){
new Promise(function(resolve,reject){
fs.writeFile('./read/b/c.txt','node',(err)=>{
if(err){
reject(err);
}else{
resolve();
}
})
})
}).then(function(){
new Promise(function(resolve,reject){
fs.readdir('./read',(err,files)=>{
if(err){
reject(err);
}else{
resolve(files);
}
})
})
}).then(function(result){
console.log(result)
})
.then()
里面返回的值会经由Promise.resovle
处理,然后决定其行为。所以你每次都只是创建了 Promise 实例,但并没有返回给 Promise 处理,相当于直接执行下一个
.then()
,不等待 Promise 的状态改变。所以你需要在
.then()
里面改成:return new Promise(....)
这样。关于 Promise 我之前做过一次讲堂,讲得非常详细,推荐你看下:Promise 的 N 种用法。