什么是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)=>{})