前端手写代码面试题
目录

实现一个简单的 Promise

· 约 4 分钟读完 · 第 20 / 125 章

推荐答案

本题详细解读

1. Promise 的基本结构

MyPromise 类是一个简单的 Promise 实现。它包含以下几个关键部分:

  • state: 表示 Promise 的当前状态,可以是 pending、fulfilled 或 rejected。
  • value: 存储 Promise 的结果值或拒绝原因。
  • onFulfilledCallbacks 和 onRejectedCallbacks: 用于存储 then 方法中传入的回调函数,以便在 Promise 状态改变时调用。

2. 构造函数

构造函数接收一个 executor 函数,该函数立即执行,并传入 resolve 和 reject 两个函数作为参数。resolve 和 reject 分别用于将 Promise 的状态从 pending 改为 fulfilled 或 rejected,并触发相应的回调函数。

3. then 方法

then 方法用于注册 onFulfilled 和 onRejected 回调函数。如果 Promise 已经处于 fulfilled 或 rejected 状态,则立即调用相应的回调函数。否则,将回调函数存储在 onFulfilledCallbacks 或 onRejectedCallbacks 中,等待状态改变时调用。

4. catch 方法

catch 方法是 then 方法的语法糖,专门用于处理 rejected 状态的情况。

5. 示例用法

在示例中,我们创建了一个 MyPromise 实例,并在 1 秒后调用 resolve 方法。then 方法中的回调函数会在 resolve 被调用时执行,输出 Success!。

6. 注意事项

  • 这个实现是一个简化的版本,不支持链式调用(即 then 方法返回一个新的 Promise)。
  • 实际使用中,Promise 的实现会更加复杂,包括对异步操作的支持、链式调用、错误处理等。

通过这个简单的实现,可以更好地理解 Promise 的工作原理和基本结构。