質問
Promise.all の順番は保証されるのでしょうか?
https://jsfiddle.net/87yv3nqo/
js
1var promise1 = new Promise(function(resolve, reject) { 2 setTimeout(resolve, 1000, 1); 3}); 4var promise2 = new Promise(function(resolve, reject) { 5 setTimeout(resolve, 1000, 2); 6}); 7var promise3 = new Promise(function(resolve, reject) { 8 setTimeout(resolve, 1000, 3); 9}); 10 11Promise.all([promise1, promise2, promise3]).then(function(values) { 12 document.write(values); 13 // output: 1,2,3 14}); 15
こちらのコードは並列で実行しない場合、結果を得るまで3秒かかります。
Promise.allで並列処理した場合約1秒でした。
よってPromise.allで問題なく並列実行ができていることがわかりました。
ここで疑問なのですが、document.write(values);
の結果が何度実行しても必ず1,2,3
でした。
並列の場合たまに2,1,3
のように順番が変わってもおかしくないはずです。
試しにsetTimeout(resolve, 1000, 2);
をsetTimeout(resolve, 2000, 2);
にしても結果は必ず1,2,3
でした。
この結果からPromise.all の引数として指定した値と結果の順番が保証されるように見えるのですが、ほんとにそうなのでしょうか?
何かドキュメントが有りましたら教えて下さい。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/30 14:36