Skip to content

异步 resolve/reject ​

当 resolve/reject 是异步调用时,then 执行时状态还是 pending,需要用 #handlers 存储回调,等状态变更后再执行。

本节要点

新增 #handlers 属性存储回调函数。then 中如果状态为 pending,将回调存入 #handlers。 #setState 在变更状态后调用 #handlers() 执行存储的回调。

#setState 变更 ​

#setState 变更
Loading code...

完整代码 ​

my-promise.js
Loading code...

运行示例 ​

示例一:异步 resolve
示例代码
Loading...
示例二:异步 reject
示例代码
Loading...
示例三:先注册 then,后 resolve
示例代码
Loading...

循序渐进实现 Promise