【发布时间】:2020-11-03 02:26:41
【问题描述】:
假设我有 3 个带承诺的函数:
function1().then(() => {
function2().then(() => {
function3().then(() => {
})
})
}).catch((err) => {
console.log(err);
})
我能否捕捉到 3 个函数中的任何一个返回的错误?如果没有,我应该怎么做才能用一条语句捕获任何函数的 promise 返回的错误?
【问题讨论】:
-
不,您只会在
function1中捕获错误,因为其他两个不是同一个承诺链的一部分。最小示例:Promise.resolve().then(() => { Promise.reject("whoops!") }).catch((err) => console.log(err)); -
有没有一种方法可以用一条语句捕获错误?
-
是的,让它们成为同一个承诺链的一部分:
Promise.resolve().then(() => Promise.reject("whoops!")).catch((err) => console.log(err)); -
最简单的形式:
function1().then(function2).then(function3).then(() => { /* do whatever */ }).catch(console.log); -
更好,
Promise.resolve().then(function1).then(function2).then(function3).then(() => { /* do whatever */ }).catch(console.log);
标签: javascript promise