我有这样的承诺数组:
let promisesArray = [
service1.load('blabla'),
service2.load(), // throws an errors
];
我想执行它们并像这样捕获它们的错误
Promise.all(promisesArray)
.then(() => doStuffs())
.catch((err) => handleError(err));
这很好,但我现在想在另一个承诺的 then() 中这样做:
baseService()
.then(() => Promise.all([
service1.load('blabla'),
service2.load(), // throw an errors
]))
.catch((err) => handleError(err));
只要我直接在 Promise.all() 中编写数组,这个的工作也很好,但是如果我想使用promiseArray
之前的定义,例如:
baseService()
.then(() => Promise.all(promisesArray))
.catch((err) => handleError(err));
然后,catch()
按预期运行,但我在控制台中有错误
publish.js:45784 EXCEPTION: Error: Uncaught (in promise): ...
但是我想使用最后一个解决方案,因为我的数组是根据某些条件通过将 Promises 推送给它来生成的。(第一个例子工作得很好,我不明白有什么不同)
将 catch 添加到我的每个承诺中,同时将它们添加到数组中可以解决我的问题,但我想找到一个更好的解决方案。
我真的很感激一些帮助。
PS:如果它改变了某些东西,我正在使用带有 zone.js 的 angular2