比如我有三个文件,分别是a.txt,b.txt,c.txt
当用nodejs中的fs模块去读取的时候:
let fs = require('fs')
fs.readFile('a.txt','utf8',(err,data)=>{
if(err){
throw err
}else{
console.log(data)
}
})
fs.readFile('b.txt','utf8',(err,data)=>{
if(err){
throw err
}else{
console.log(data)
}
})
fs.readFile('c.txt','utf8',(err,data)=>{
if(err){
throw err
}else{
console.log(data)
}
})
效果:
我们之前的套路是三个异步文件分别互相套这样就能让一个解决完在执行下一个,但是这样看上去非常的乱,我们利用es6的promise就可以解决执行返回结果的先后顺序比如我们先执行完a文件在执行b文件在执行c文件
// 解决异步问题
let fs = require('fs')
let a = new Promise((resolve,reject)=>{
fs.readFile('a.txt','utf8',(err,data)=>{
if(err){
reject(err)
}else{
resolve(data)
//return data
}
})
});
let b = new Promise((resolve,reject)=>{
fs.readFile('b.txt','utf8',(err,data)=>{
if(err){
reject(err)
}else{
resolve(data)
}
})
});
let c = new Promise((resolve,reject)=>{
fs.readFile('c.txt','utf8',(err,data)=>{
if(err){
reject(err)
}else{
resolve(data)
}
})
});
a
.then((data)=>{
console.log(data);
return b
},(err)=>{
}).then((data)=>{
console.log(data)
return c
},(err)=>{
}).then((data)=>{
console.log(data)
},(err)=>{})
效果:
这样就解决了顺序问题