大家都知道jQuery的链式调用是return this的妙用,那么Promise的呢?比如function start() {
return new Promise((resolve, reject) => {
resolve('start');
});
}
start()
.then(data => {
// promise start
console.log('result of start: ', data);
return Promise.resolve(1); // p1
})
.then(data => {
// promise p1
console.log('result of p1: ', data);
return Promise.reject(2); // p2
})
.then(data => {
// promise p2
console.log('result of p2: ', data);
return Promise.resolve(3); // p3
})
.catch(ex => {
// promise p3
console.log('ex: ', ex);
return Promise.resolve(4); // p4
})
.then(data => {
// promise p4
console.log('result of p4: ', data);
});result of start: startresult of p1: 1ex: 2result of p4: 4第三步,reject的还被下一步的then忽略掉了,这种链式调用是什么原理?怎么实现的?
2 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
因为啊,每个then都返回一个新的promise,每个then都返回一个新的promise,每个then都返回一个新的promise。
返回的新的promsie会在上一个promise的状态变更改时候开始执行,以此类推,每次返回的新的promise被挂在上一个promise上,就此串成了一串
- 2 回答
- 0 关注
- 1190 浏览
添加回答
举报
0/150
提交
取消