美文网首页
14.Promise对象

14.Promise对象

作者: 讲武德的年轻人 | 来源:发表于2019-09-25 11:13 被阅读0次

尝试删除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('手动终止')

相关文章

网友评论

      本文标题:14.Promise对象

      本文链接:https://www.haomeiwen.com/subject/mytsuctx.html