$ q.all在拒绝承诺时解决

时间:2016-08-23 18:00:29

标签: javascript angularjs promise

我正在尝试同时执行所有承诺,以便在他们解决时我可以做些什么。有一个(强制)被拒绝的承诺,但'$ q.all()'结算。我错过了一些'$ q.all'行为?

提前致谢!

{{1}}

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"));