Promise/Deffered 模式
· 阅读需 3 分钟
包含两个部分:
- Promise
- Deffered
Promise 抽象定义
Promise/A 对单个异步作出了 这样的抽象定义:
- Promise 操作只会处在 3 中状态:
未完成
、完成
和失败
。 - Promise 的状态只会出现从未完成状态转化为完成态或失败态,不能逆反。完成态和失败态不能互相转化。
- Promise 的状态一旦转化,将不能被更改。
API 定义
一个 Promise 对象只要具备 then
方法即可。
但是 then 方法也有要求:
- 接受
完成态
、错误态
的回调函数。在操作完成或出错时,将会调用对应方法。 - 可选的支持
progress
事件回调作为第三个方法。 then()
方法只接受function
对象,其余对象将被忽略。(可使用typeof func === 'function'
来判断)then()
方法继续返回 Promise 对象,以实现链式调用。
代码可参考这里的例子 https://github.com/luoyjx/promise-impl