我有两个功能。一个叫做某个东西,另一个叫做它,asyncfunc。我的问题是,如果在asyncfunc中,函数会抛出一个错误,我想停止执行函数的其余部分并返回。我发现如果我在catch中重新抛出错误,我可以得到那种行为,但我需要在之后添加另一个catch。
那么如果任何承诺被拒绝,我该如何从函数返回? (在这种特殊情况下,它们是一个接一个,所以我想我可以使用.then,但如果它们没有嵌套,我想要相同的结果。)
async function something()
{
await asyncfunc().catch(e => console.error(e));
}
async function asyncfunc()
{
await some_promise.catch(err => { throw new Error(err) }); // Error gets swallowed unless I add another catch
await some_promise2.catch(err => { throw new Error(err) }); // Error gets thrown here, return and don't execute promise 3
var data = await some_promise3.catch(err => { throw new Error(err) });
return data;
}
答案 0 :(得分:1)
您可以在something()
函数中捕获错误,并且asyncFunc
可以被链接以在抛出时传播错误:
function something()
{
// You dont need to call async/await, if you are not returning
// and this function only has one call.
asyncfunc().catch(e => console.error(e));
}
// Notice I have removed "async"
function asyncfunc()
{
// its a simple case of chain of Promises.
// to execute it serially you can chain it like this;
return some_promise
.then(some_promise2)
.then(some_promise3)
.catch(error => {
// you can do something like 'log' it
throw error;
})
}