Promise 源码获取
路径地址
C:\Program Files\nodejs\node_modules\npm\node_modules\es6-promise\lib\es6-promise\promise.js
源码存放在 node.js 根目录下,如果不知道自己的 node.js 安装目录在哪里,可以在环境变量 path 中查看。
Promise API 分析
在源码中 promise 的每一个 api 都是写成单独的一个模块,最后在进行组合到 Promise 的静态成员和原型上。接下来我们主要分析一下 promise 都有哪些 api 都有哪些作用。
| 模块 | 描述 |
|---|---|
| Promise 构造函数 | promise 是由 class 进行定义的。主要用来创建一个 promise 实例,构造函数内部将会通过一个变量进行标记当前 promise 状态。 |
| 实例成员 then | 调用 then 成功回调函数,并返回一个新的 promise。 |
| 实例成员 catch | 调用 catch 失败回调函数,并返回一个新的 promise。 |
| 实例成员 finally | 无论当前状态是成功还是失败,都会调用 finally 回调函数,并返回一个新的 promise。 |
| 静态成员 all | Promise.all 实际上是一个函数,它接收一个 promises 数组并返回一个 Promise。当所有的 promises 都完成时会得到 resolve 或者当其中一个被拒绝时会得到 rejected。 |
| 静态成员 race | Promise.race 实际上是一个函数,它接收一个 promises 数组并返回一个 Promise。与 Promise.all 不同的是,当有任意一个 promise 状态发生变化时,则返回的 promise 状态也随之变化。 |
| 静态成员 resolve | 直接返回一个成功状态的 promise。 |
| 静态成员 reject | 直接返回一个失败状态的 promise。 |
主要难点其实在 promise 的链式调用。
