本文已整理到 Github,地址 blog。
如果我的内容帮助到了您,欢迎点个 Star
鼓励鼓励 :) ~~
我希望我的内容可以帮助你。现在我专注于前端领域,但我也将分享我在有限的时间内看到和感受到的东西。
本文已整理到 Github,地址 blog。
如果我的内容帮助到了您,欢迎点个 Star
鼓励鼓励 :) ~~
我希望我的内容可以帮助你。现在我专注于前端领域,但我也将分享我在有限的时间内看到和感受到的东西。
实现 Promise/A+
本文的目标是编写一个与 then/promise
类似的符合 Promise/A+ 的实现。
以下前半部分译自 Implementing promises from scratch,也是本文的重点。你可以查看原文,它还使用 TDD 方式,编写一些测试用例,帮助你理解。下半部分是 Promise 各个方法的实现。
Promise 状态
Promise 是必须处于以下状态之一的对象/函数:PENDING
、FULFILLED
和 REJECTED
,最初 promise 处于 PENDING
状态。
Promise 可以从 PENDING
状态转换为带 value
值的 FULFILLED
状态或带 reason
的 REJECTED
状态。
为了进行状态转换,promise 构造函数接收到一个名为 executor
的函数,executor
会立即被调用,调用时使用两个函数 fulfill
和 reject
来执行状态转换:
fulfill(value)
— 通过value
从PENDING
到FULFILLED
,value
现在是 promise 的属性。reject(reason)
— 通过reason
从PENDING
到REJECTED
,reason
现在是 promise 的属性。