Promise详解

79 阅读2分钟

本篇文章主要针对于promise对象实例的一个解析,

首先来说,我们应当知道Promise基于什么实现,为了解决什么问题而存在的???

Promise本质是一个工厂函数,也可以说是一个构造函数,返回给我们一个Promise对象,主要为了解决我们ES6之前回调地狱的写法优化

promise有哪些状态?对应值有哪些 - pending、fulfilled、rejected

new Promise 执行器executor(),执行器参数是?- resolve、reject

promise的默认状态是?promise状态的流转?- 默认pending,pf,pr

promise,value保存成功状态的枚举?- undefined/thenable/promise

promise,失败状态值?- reason保存失败

描述promise接口

promise一定会有then,then接收来源?

- 两个回调onFulfilled(value) + onRejected(reason)

图片

而后我们使用class关键字去声明一个Promise类,初始化类参数

图片

以上完成之后,我们就是已经初始化好了我们一个promise对象了。接下来我们需要做的事就是给他添加方法,

下面我们来讲最基础的两个方法then和catch方法:

图片

这个时候,我们可以尝试new一下,但是会发现一个问题,我们无法传入一个异步操作,而promise是可以接收异步定时器的,那么下面继续优化,实现这个逻辑

定义两个数组:onResolveCallBacks和onRejectCallBacks用来接受,异步回调参数,同时在resolve和reject中去循环数组,执行传入的方法,等待接收

图片

处理参数,将传入的方法放进回调数组,循环执行,获取异步输出值

图片

以下是基础全套代码

图片

写到目前为止,我们已经可以清晰的看出我们Promise对象的一个实现逻辑了,

下面,我们将要更加深入的使用Promise的一个概念,链式调用!!

Action!!!

首先完成链式调用,我们需要去封装一个方法,叫他resolvePromise好了

图片

最终版本的Promise,出炉了!!

图片

有兴趣的同学可以关注一下作者哦~~~

qrcode_for_gh_94721abee845_258-2.jpg