私のコードでは、条件付きタスクがあり、すべてが約束を返します。タスクを順番に実行する必要があります。複数の条件付き約束をチェーンするにはどうすればいいですか?
私の現在の実装では、このようなものになります。
var chain = [];
if (/* some condition for task A */) {
chain.push(function(doContinue){
taskA().then(doContinue);
});
}
if (/* some condition for task B */) {
chain.push(function(doContinue){
taskB().then(doContinue);
});
}
if (/* some condition for task C */) {
chain.push(function(doContinue){
taskC().then(doContinue);
});
}
var processChain = function() {
if (chain.length) {
chain.shift()(processChain);
} else {
console.log("all tasks done");
}
};
processChain();
これはうまく動作しますが、最初に私は約束を使用して.then
を使用して、すべての機能を連鎖チェーンを作成する方法を探していましたが、私はありませんでした実用的な解決策を得ることができます。
then
コールの約束とチェーンのみを使用するクリーナーの方法がある場合は、例を参照してください。
条件を非同期的に評価する必要がありますか(前回の約束ステップの後)、または単に同期させるだけですか? – Bergi
@Bergi条件は最初に評価することができ、約束によって生成された結果には依存しません。 – bummzack
その後、raina77owsソリューションが最適です。 – Bergi