2016-10-24 8 views
0

私は約束のためにQ.jsを使用しています。次のコードでは、各メソッドがajax呼び出しを行い、約束を返します。予想通り、次が始まる前に、すべては、各メソッドの実行と完了で動作します。私は本当に好きしかしfunctionOne、functionTwoとfunctionThreeのすべてに同時に実行されるだろうと「doSomethingElseは」ときにのみ実行する必要があり約束:非同期メソッドを並列に実行してからメソッドを実行する方法

functionOne().then(junctionTwo) 
       .then(functionThree) 
       .then(doSomethingElse); 

何最初の3つの方法が完了しました。

約束/ Q.jsでこれをどのように達成しますか?

答えて

1

あなたは約束の配列が全て終了したら、あなたに伝えるために、今、標準化されたPromise.all()を使用することができますQライブラリの構文を使用している場合は、同じことを行うQ.all()を使用することができます。

Q.all([functionOne(), functionTwo(), functionThree()]).then(function(results) { 
    // all are done here 
    doSomethingElse(); 
}).catch(function(err) { 
    // error in at least one promise here 
}); 

あなたは、JSは、シングルスレッド(ここで使用されていないwebWorkersの外)であるため、Node.jsのか、ブラウザで、何も「同時に」が存在しないことを知っている必要があります。しかし、あなたの操作が非同期(私は彼らが約束を返すと仮定していると仮定します)であれば、3つすべてが同時に実行できますが、同時に1つしか実行されません。

+1

なぜdownvoteですか?質問とすべての答えはすべてdownvotesを得たので、シリアルdownvoterのように見えます。奇妙な説明がない。あなたがそれが下降声に値すると思う理由について誰も理論的根拠を提示しなければ、あなたの答えを改善するのは難しいです。ダウンボントは懲罰的なものでも、あなたが間違っていると考えることによってコミュニティ全体に利益をもたらす改善を促すこともできます。 – jfriend00

+0

彼はひどく研究された質問に答えるためにあなたを罰するでしょうか?我々は知ることができません、投票は主観的です。あなたの答えの内容に客観的に間違っていることは何もないと主張することができます。私の+1があります。 – Bergi

+0

これはどうやってひどく研究された質問ですか?既知の回答を持つ質問は、回答がある人によって「ひどく研究された」と呼ぶことができますか? jfriend00とkouakに感謝します。私はこれが言語に追加されたことを知らなかった。 – Sean

関連する問題