问美元.当有一个被拒绝的承诺时,一切都解决了

$q.all resolves when there is a rejected promise

本文关键字:解决 承诺 美元 有一个 拒绝      更新时间:2023-09-26

我试图在同一时间执行所有的承诺,所以我可以做一些事情,当他们解决。有一个(强制)拒绝的承诺,但'$q.all()'解决了。我少了一些$q。所有的行为吗?

提前感谢!

        function saveOrder () {
            return ordersSrv.saveOrder(order).then(function(data) {
                console.log('saveOrder OK');
            },
            function(error) {
                console.log('saveOrder KO');
            });
        }

        var aPromises = [saveOrder()];
        $q.all(aPromises).then(function () {
            console.log('OK');
        },
        function (error) {
            console.log('---> error');
        });

在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拒绝添加一个catch处理程序——这意味着你正在处理它。如果您想要记录但仍然无法处理它-重新抛出它:

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