promise共有三种状态:pending(待定中)| resolved(已完成)| rejected(已拒绝)。
其状态变化过程有两种:pending >>> resolved 或 pending >>> rejected.
状态变化过程不受外界影响,结果不可逆转。
状态与触发then和catch回调的关系:
- resolved状态会触发后续then的回调。
- rejected状态会触发后续catch的回调。
- 当去触发then的回调时,会一直向下寻找最近的then回调,这个过程中遇到的所有catch的回调都会被略过不再执行。触发catch的回调时同理。
- then的回调正常执行返回resolved状态,报错则返回rejected状态。
- catch的回调正常执行返回resolved状态,报错则返回rejected状态。