模型
1.es6将某一件可能发生异步操作的事情分为两个阶段:unsettled和settled。
unsettled:未决阶段,表示事情还在进行前期处理,还没有发生通向结果的事情
settled:已决阶段,表示事情已经有了结果,事情无法逆转
事情总是从未决到已决的,未决有控制何时到达已决的能力。
2.es6将事情划分为三种状态:pending、resolved、rejected
- pending: 挂起,处于未决阶段
- resolved:已处理,已决阶段的一种状态,表示整件事情已经出现结果,而且这个结果是正常处理下去的
- rejected:已拒绝,已决阶段的一种状态,表示整件事情已经出现结果,但是这个结果是不可以正常处理下去的,通常是错误
把事情变为resolved状态的过程叫做:resolve,把事情变为rejected状态的过程叫做:reject。两个过程都可以传递数据。阶段和过程都是不可逆的。
3.当事情到达已决阶段后,通常需要后续处理,不同的已决阶段决定了不同的后续处理
- resolved状态:这是一个正常的已决状态,后续处理表示为 thenable
- rejected状态:这是一个非正常的已决状态,后续处理表示为 catchable
- 后续处理可能会有多个,所以会形成作业队列
4.这整个过程叫做Promise
理解这些概念,对学习Promise非常重要!