次のような Promise の配列があります。
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
define を以前のように使用したい場合は、次のようにします。
baseService()
.then(() => Promise.all(promisesArray))
.catch((err) => handleError(err));
その後、catch()
期待どおりに実行されますが、コンソールにエラーがあります
publish.js:45784 EXCEPTION: Error: Uncaught (in promise): ...
しかし、Promise をプッシュすることにより、いくつかの条件に従って配列が生成されるため、最後のソリューションを使用したいと考えています。(そして最初の例は問題なく動作していますが、何が違うのかわかりません)
配列に追加するときに各約束にキャッチを追加すると、問題は解決しますが、より良い解決策を見つけたいと思います。
私は本当にそれでいくつかの助けをいただければ幸いです.
PS:何かを変更する場合、zone.jsでangular2を使用しています