Promise类核心逻辑实现
- Promise就是一个类,在执行这个类的时候,需要传递一个执行器进去,执行器会立即执行。
- Promise中有三种状态,分别为:成功 fulfilled 失败 rejected 等待 pending。状态一旦确定就不可更改。
- resolve和reject函数是用来更改状态的。resolve:fulfilled,reject:rejected
- then方法内部做的事情就是判断状态,如果状态是成功,调用成功的回调函数。如果状态是失败,调用失败回调函数。then方法是被定义在原型对象中的方法。
- then成功回调有一个参数 表示成功之后的值 then失败回调有一个参数,表示失败后的原因。
- 同一个promise对象下面的then方法是可以被调用多次的。
- then方法是可以被链式调用的,后面then方法的回调函数拿到值的是上一个then方法的回调函数的返回值。
在Promise类中加入异步逻辑
若调用then时是pending状态,即为异步代码。需要将成功回调和失败回调存储起来并在成功和失败的代码里进行判断,等异步代码执行后再运行相应的代码。
实现then方法多次调用添加多个处理函数
让成功回调和失败回调为一个数组,存储相应的回调函数,并在对应的成功和失败代码里循环执行对应的回调函数。
实现then方法的链式调用(一)
要实现then方法的链式调用,那么then方法必须要返回Promise对象,并且上一个Promise执行回调函数后的值需要传入返回的Promise的回调函数中
实现then方法的链式调用(二)
如果在then中返回的是一个普通值,则直接调用resolve,若是Promise对象,则还需要判断该Promise对象返回的结果之后再根据Promise对象返回的结果决定是调用resolve还是reject(继续传递下去)。