Promise解决回调地狱
const fs = require('fs')
const path = require('path')
//当new 一个 Promise实例是,就是立即执行这个异步操作中的代码
function getFileByPath(fpath){
var promise = new Promise(function(resolve,reject){
fs.readFile(fpath,'utf-8',(err,data)=>{
if(err) return reject(err)
resolve(data)
})
})
return promise
}
当我们想要:前面的Promise执行失败,不影响后续Promise的执行,此时可以为每个Promise指定失败的回调函数
getFileByPath('./files/1.txt')
.then(function(data){
console.log(data+'--------')
return getFileByPath('./files/2.txt')
},function(err){
console.log("文件1:"+'--------'+err.message)
return getFileByPath('./files/2.txt')
})
.then(function(data){
console.log(data+'--------')
return getFileByPath('./files/3.txt')
},function(err){
console.log("文件2:"+'--------'+err.message)
return getFileByPath('./files/3.txt')
})
.then(function(data){
console.log(data+'--------')
},function(err){
console.log("文件3:"+'--------'+err.message)
})
当我们想要:前面的Promise执行失败,后续Promise不执行并返回错误提示,可以在最后的.then()后加catach()函数接收错误信息
getFileByPath('./files/11.txt')
.then(function(data){
console.log(data+'--------')
return getFileByPath('./files/2.txt')
})
.then(function(data){
console.log(data+'--------')
return getFileByPath('./files/3.txt')
})
.then(function(data){
console.log(data+'--------')
})
.catch(function(err){
console.log("这是自己的处理方式"+err.message)
})