14.Promise对象

尝试删除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('手动终止')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容