[JavaScript]Promise

概述

Promise提供一种执行异步回调动作时候,以链的形式操作回调结果的方法。

用法

new Promise(executor);

误区

1.executor不是消息队列,它会马上执行;

2.executor必须至少调用resolve, reject两者之一,否则Promise的then/catch无法触发;

3.catch()相当于then(null, rejectHandler);

new Promise((resolve, reject) => {
    reject();
})
.catch(() => {
    console.log('Do that');
})
/*.then(null, () => {
    console.log('Do that');
})*/
//以上语法是对等的

4.then/catch后面可以无限接then/catch,但是至于执行then的resolveHandler, rejectHandler,还是是否执行catch的rejectHandler,有两种可能性:

如果一个Promise接下来是then,那么看看这个Promise调用的是resolve还是reject,如果存在调用的handler,则调用,否则不执行直接返回Promise。而catch则可以把它当成then(null, rejectHandler)去理解;

then/catch返回的Promise默认是resolve状态,所以不管上一个then/catch调用的是resolveHandler还是rejectHandler,下一个调用的必然是resolveHandler,除非在上一个then/catch显式地调用了resolve或reject;

 

猜你喜欢

转载自www.cnblogs.com/yiyide266/p/11084063.html