ES6中提出的一个规范 Promise,常用于处理各种异步操作带来的回调地狱
但是大量地进行 Promise 的链式调用, 以及复杂的业务逻辑, 又会带来的新的问题,经过一股脑地 Promise...then.. 最后的状态及值分别是什么?
在这里将它分为两种情况:
1. then 里面对 Promise 的相关结果进行了对应的处理,例:
const success = new Promise((resolve, reject) => {
resolve(1)
})
.then(res => {
// 处理 resolve
})
const fail = new Promise((resolve, reject) => {
reject(1)
})
.then(null, res => {
// 处理 reject
})
对于这种情况, 若处理函数执行过程不报错:
则最后的状态为 fulfilled,值为处理函数的返回值( 若返回值为 Promise 对象,则最后的状态及值与这个 Promise 对象保持一致 );
若执行过程报错:
则状态为 rejected,值为报错原因;
2. 未对 Promise 的相关结果进行对应处理,例:
const success = new Promise((resolve, reject) => {
resolve(1)
})
.then(null, res => {
// 处理 reject
})
const fail = new Promise((resolve, reject) => {
reject(1)
})
.then(res => {
// 处理 resolve
})
对于这种情况,直接忽略 .then 内的代码,最后的状态和值与 new Promise(xxx) 的状态和值一致
由此可发现,当对 Promise 的结果进行了相应处理的时候,只需关注这个处理过程是否完成,完成则说明这次 Promise 成功,整个状态为 fulfilled,并将值接力下去,未对 Promise 结果处理时,then 内不执行,最后状态和结果不变。