Promise
什么是promise?
- 1、Promise是一个状态机,有三种状态pending, rejected(失败态), fulfilled(成功态),默认状态为pending;状态一旦改变就会凝固。
- 2、 我们可以new Promise的形式直接调用回调函数来执行,改变状态的函数resolve或者reject。resolve或者reject函数中实参如果是promise,最终的状态由内层promise的最终的状态来决定,同时把值传递下一个then中对应的处理函数中。 如果是异步的更改状态;
- 3、Promise可以进行.then的链式调用,参数可选,分别为成功的回调和失败的回调。如果then中的参数不是函数,则会出现值穿透现象。
- 4、Promise可以类上的静态方法resolve或者reject直接更改Promise的状态。
- 5、Promise类上其他静态方法的实现all, race, any
- 6、Promise原型上方法catch, finnaly的实现
- catch总能捕获统一层的then中或者Promise中抛出的错误
- finnaly Promise状态的最终捕获状态,我们往往利用这个函数,来执行异步后的操作。
- 测试 npm install promises-aplus-tests -g
实现1,2,3
const PENDING = 'pending';
const FULFILLED = 'fulfilled';
const REJECTED = 'rejected';
class Promise1{
constructor (executor) {
this.value = undefined;
this.reason=undefined;
this.status = PENDING;
this.onFulfilledCallbacks = [<