上一篇文章 24.Promises/A+ 规范 介绍了Promises/A+ 规范,我们来手动实现一个符合 Promises/A+ 规范的自己的Promise。
根据规范,Promise 共有三种状态 pending
,fulfilled
,rejected
,我们使用 state
来表示 promise 当前的状态,使用 value
来表示当前值
或原因
。当然还有最重要的 then
方法。同时我们还需要一些辅助函数,比如 isFunction
。
接着,我们定义两个函数,可以将 promise 转换为 fulfilled
或 rejected
。
最后,我们还需要一个 resolver,将刚才定义的 doResolve
和 doReject
暴露给 Promise 的构造函数。想想我们平时是怎么 new 一个 Promise的?
到这里,Promise 最核心的功能已经实现。可以很容易地看出,这里 Promise 的底层实现使用了回调(callback)