Promise

97 阅读1分钟

什么是Promise

Promise在执行任务(异步或同步)和回调之间起到了中介的作用,相比传统的回调方式,有以下优点:

  • 代码更加规范
  • 避免出现回调地狱
  • 便于处理错误

了解promise实例

Promise是一个构造函数,构造出promise实例,构造方式如:let a = new Promise((resolve,reject)=>{}).

resolve和reject

可以看到Promise接受(要回调)一个执行函数,这个执行函数接受的resolve和rejecet两个参数,分别代表着执行任务成功和失败的状态.而当我们把promise实例打印出来,有两个属性PromiseState PromiseResult ,分别是执行任务的状态和执行任务的结果.

then

then是每个promise实例都带的方法,Promise.Prototype.then这么以下就明白了.then用来指定回调函数,接受两个参数,当执行任务的状态为resolve执行第一个,状态reject执行第二个.而且then也是一个promise实例,因此可以链式操作.他的PromiseState PromiseResult 根据被调用函数返回的三种情况:

  • throw关键词,rejsect状态,结果为throw后的值
  • 返回非promise实例,为resolve状态,结果为返回值
  • 返回promise实例,则根据promise实例的状态和结果

中断链式操作的唯一方法:.then(return new Promise(reslove,reject)=>{})