从头开始实现 Promise

发布时间:2024-08-22 10:01

本文已整理到 Github,地址  blog

如果我的内容帮助到了您,欢迎点个 Star  鼓励鼓励 :) ~~

我希望我的内容可以帮助你。现在我专注于前端领域,但我也将分享我在有限的时间内看到和感受到的东西。


本文已整理到 Github,地址  blog

如果我的内容帮助到了您,欢迎点个 Star  鼓励鼓励 :) ~~

我希望我的内容可以帮助你。现在我专注于前端领域,但我也将分享我在有限的时间内看到和感受到的东西。


实现 Promise/A+

本文的目标是编写一个与 then/promise 类似的符合 Promise/A+ 的实现。

以下前半部分译自 Implementing promises from scratch,也是本文的重点。你可以查看原文,它还使用 TDD 方式,编写一些测试用例,帮助你理解。下半部分是 Promise 各个方法的实现。

Promise 状态

Promise 是必须处于以下状态之一的对象/函数:PENDINGFULFILLEDREJECTED,最初 promise 处于 PENDING 状态。

Promise 可以从 PENDING 状态转换为带 value 值的 FULFILLED 状态或带 reasonREJECTED 状态。

为了进行状态转换,promise 构造函数接收到一个名为 executor 的函数,executor 会立即被调用,调用时使用两个函数 fulfillreject 来执行状态转换:

  • fulfill(value) — 通过 valuePENDINGFULFILLEDvalue 现在是 promise 的属性。
  • reject(reason) — 通过 reasonPENDINGREJECTEDreason 现在是 promise 的属性。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号