我正在尝试同时执行所有承诺,以便在他们解决时我可以做些什么。有一个(强制)被拒绝的承诺,但'$ q.all()'结算。我错过了一些'$ q.all'行为?
提前致谢!
{{1}}
答案 0 :(得分:2)
在try catch块中,当您catch
出现错误并且没有重新抛出时 - 它会被处理:
try {
throw Error();
} catch (e) {
console.log("Error", e);
}
console.log("This log also happens");
与承诺相同:
Promise.reject(Error())
.catch(e => console.log("Error", e))
.then(() => console.log("This log also happens"));
您为saveError
拒绝添加了一个抓取处理程序 - 这意味着您正在处理它。如果你想记录并仍然没有处理它 - 重新抛出它:
try {
throw Error();
} catch (e) {
console.log("Error", e);
throw e;
}
console.log("This log doesn't happen");
或承诺:
Promise.reject(Error())
.catch(e => { console.log("Error", e); throw e; })
.then(() => console.log("This log doesn't happen"));