一、为什么要Promise对象的?
大量的异步操作,如果要按顺序执行,通过回调函数执行的方式,就会造成回调地狱。
二、 解决方法
通过Promise解决回调地狱,然后形成链式调用 ,一组链式调用只需要一个catch,但多个也可以
function test(){
//返回Promise
return new Promise((resolve,reject)=>{
//异步处理
成功执行resolve
失败执行reject
}
}
案例:
const fs = require('fs');
function isexist(){ //文件是否存在
return new Promise((resolve,reject)=>{
fs.stat('./index.js',(err)=>{
if(err){
reject('文件不存在')
}else{
resolve('文件存在')
}
})
})
}
function delfile(){ //删除文件
return new Promise((resolve,reject)=>{
fs.unlink('./index.js',(err)=>{
if(err){
reject('删除失败')
}else{
resolve('删除成功')
}
})
})
}
//成功执行then , 不成功直接执行catch
isexist()
.then((ok)=>{
console.log(ok) //打印 文件存在
return delfile()
})
.then((ok)=>{
console.log(ok) //打印 删除成功
})
.catch((err)=>{
console.log(err) //打印 文件不存在
return delfile()
})
.catch((err)=>{
console.log(err) //打印 删除失败
})