首先讲一个定义:
回调地狱:"回调函数嵌套回调函数"
fs.readFile("./1.txt", (err, p) => {
if (p.toString() === 'A_') {
fs.readFile("./2.txt", (err, p) => {
if (p.toString() === 'B_') {
fs.readFile("./3.txt", (err, p) => {
if (p.toString() === 'C_') {
console.log("ok")
}
})
}
})
}
})
表现出来的形式是父子关系
使用promise,每个条件成为了兄弟关系
let fs = require("fs")
let pro = new Promise(resolve =>{
fs.readFile("./sync1.txt",(err,p) =>{
resolve(p.toString())
})
}).then(p =>{
if(p ==="A_"){
return new Promise(resolve =>{
fs.readFile("./sync2.txt",(err,p2) =>{
resolve(p2.toString())
})
})
}
}).then(p2=>{
if(p2 ==="B_"){
return new Promise(resolve =>{
fs.readFile("./sync3.txt",(err,p3) =>{
resolve(p3.toString())
})
})
}
}).then(p3=>{
console.log(p3)
})
所以promise的格式为:
let pro = new Promise(function(resovle,reject){
//只能存在一个,不然就只会有成功
resovle("成功的标志")
//reject("失败的标志")
}).then(res =>{
console.log("获取成功:" +res)
}).catch(rej =>{
console.log("获取失败:" +rej)
}).finally(()=>{
console.log("一直会执行")
})
===>
获取成功:成功的标志
一直会执行