2017-05-11 8 views
0

サンプルコード:約束どおりにスキップする方法(ブルーバード)?

Queues.findOne({_id: id}) 
.then(function(q) { 
var status = q.status; 
//... 
}).then(function(q) { 
// A 
}).then(function(q) { 
// B 
}).then(function(q) { 
// C 
}).then(function(q) { 
// D 
}).then(function(q) { 
// E 
}).then(function(q) { 
// F 
}) 

ステータスが1であれば、A/B/C/D/E/Fが全て実行されるべきフローが異なるであろう

、状態に依存。

ステータスが2の場合は、C/D/E/Fを実行する必要があります。ABをスキップする方法は?

ステータスが3,E/Fの場合、A/B/C/Dをスキップする方法は?

+0

を使用することができますか? 。次いで、(関数(Q、Iは '.thenは(関数(Q){ VARステータス= q.status})期待(q.status <= 1)// A' – Bergi

+0

場合だけ'、文字通りそれを書き出します){ // 'A 'の' q'は 'undefined 'であることが保証されているので、**実際のコード**にあなたの質問には欠けている重要なコードがあります。 –

答えて

1

あなたはあなたがあなたのチェーンを通じて `q`を渡している

Queues.findOne({_id: id}).then(function(q) { 
    var status = q.status; 
    var x = Promise.resolve(); 
    var y = status <= 1 ? x.then(A).then(B) : x; 
    var z = status <= 2 ? x.then(C).then(D) : y; 
    return z.then(E).then(F); 
} 
関連する問題