私はお互いに独立した2つの約束を持っており、の約束が完了した後に最後のステップをしたいと思っています(拒否または解決)。AngularJSの複数の約束のためにsingle finallyハンドラを持つ方法は?
の$ q.all()私は最終的にはいつも約束のいずれかが
一つの解決策はカウンターを持っていると持っている可能性が拒否しても、(一度だけ、両方の約束のために)実行するとして使用することはできませんfinallyHandlerは、両方の約束が解決/拒否されたときにそれを実行する関数です。
var count = 0;
function finallyHandler() {
if (++count === 2) {
doStuff();
count = 0;
}
}
firstPromise.finally(finallyHandler);
secondPromise.finally(finallyHandler);
これが動作することができますが、右には見えません。
これを行うにはさらに良い方法はありますか?
解決済みか拒否のどちらが解決されるのか?コードを読みやすく、扱いやすくします。 – briosheje
@brioshejeは正しいアイデアを持っています。それぞれが独自のパススルー・エラーの振る舞いを持つように、約束の配列を構築する。 'promises.push(doStuff()。catch(e => e))' 'Promise.allを' promises'に適用します。 – danh