class demo { promiseFn() { return new Promise((resolve, reject) => { resolve(10); }); } FnA() { return this.promiseFn() .then(a => { throw a; }) .catch(e => { console.log(e); }); } FnB() { this.FnA().then(a => { console.log(a, 11111111111); }); }}new demo().FnB();//10//undefined 11111111111为什么FnB的then回执行?
2 回答
当年话下
TA贡献1890条经验 获得超9个赞
你的代码执行等价于下面的方式
class demo {
promiseFn() {
return new Promise((resolve, reject) => {
resolve(10);
});
}
FnB() {
this.promiseFn().then(a => {
console.log('a' + a)
throw a;
}).catch(e => {
console.log('e' + e);
return e
}).then(a => {
console.log(a, 11111111111);
});
}
}
new demo().FnB();
//输出
a10
e10
undefined 11111111111
因为catch 捕获执行后返回的也是一个promise,假如你在catch里 return e的话,最后就会输出
a10
e10
10 11111111111
添加回答
举报
0/150
提交
取消