尝试删除hehe.js文件的Promise示例:
fs = require('fs');
function delfile(){
return new Promise((resolve,reject)=>{
fs.unlink('./hehe.js',(err)=>{
if(err){
reject("文件不存在");
console.log("删除出错!")
}else{
resolve("妥妥的")
console.log("删除成功");
}
})
})
}
delfile()
.then((msg)=>{
console.log("then删除结果"+msg)
})
.catch((fault)=>{
console.log("err删除结果"+fault)
})
hehe.js文件不存在的,所以执行结果是:

- resolve对应then
- reject对应catch
- then可以进行链式连接,catch不可以
- catch写在最后,链式中的then出错的话会冒泡到最后的catch。
链式调用的一个例子
const fs=require('fs');
//封装
function isEixt(){
return new Promise((resolve,reject)=>{
fs.stat('./hehe.js',(err,stats)=>{
if(err){
reject('文件不存在')
}else{
resolve('文件存在')
}
})
})
}
function delFile(){
return new Promise((resolve,reject)=>{
fs.unlink('./hehe.js',(err)=>{
if(err){
reject('del no ok')
}else{
resolve('del ok')
}
})
})
}
isEixt()
.then(()=>{
console.log('is exit 的成功处理')
return delFile()
})
.then(()=>{
console.log('删除文件成功处理')
})
.catch((err)=>{
console.log('catch')
console.log(err)
})
// 链式调用 一组链式调用中只需要一个catch
- 如何终止链式调用的执行?
可以手动抛出异常,立马调到catch,例如:
throw new Error('手动终止')
网友评论