[解決済み】Node.jsネイティブのPromise.allは並列処理か逐次処理か?
質問
この点を明確にしたいと思います。 ドキュメント はあまり明確ではありません。
Q1:
は
Promise.all(iterable)
は、すべての約束を順次または並列に処理するのですか?あるいは、より具体的には、次のような連鎖した約束を実行することと同等なのでしょうか?
p1.then(p2).then(p3).then(p4).then(p5)....
それとも他のアルゴリズムで、すべての
p1
,
p2
,
p3
,
p4
,
p5
などが同時に(並列に)呼び出され、すべてが解決(または1つが拒否)されると同時に結果が返されるのですか?
Q2:
もし
Promise.all
は並列に実行されますが、反復処理可能なものを順次実行する便利な方法はありますか?
備考 : QやBluebirdではなく、すべてネイティブのES6仕様にしたい。
どのように解決するのですか?
<ブロッククオート
は
Promise.all(iterable)
は、すべての約束を実行していますか?
いいえ、約束は実行されません。それらは、それらが実行されるときにタスクを開始します。
作成
- を表すだけであり
あなた
に渡す前にも、すべてを並列に実行しています。
Promise.all
.
Promise.all
は
待つ
複数のプロミス。それらがどのような順序で解決されるのか、計算が並列で実行されているかは気にしません。
反復処理可能なオブジェクトを順次実行する便利な方法はありますか?
すでにプロミスを持っている場合は、あまりできませんが
Promise.all([p1, p2, p3, …])
(これはシーケンスの概念を持ちません)。しかし、非同期関数のイテラブルがあれば、それらを順次実行することは可能です。基本的に、あなたは
[fn1, fn2, fn3, …]
になります。
fn1().then(fn2).then(fn3).then(…)
を使用することであり、その解決策としては
Array::reduce
:
iterable.reduce((p, fn) => p.then(fn), Promise.resolve())
関連
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] Node.jsでファイル/ディレクトリが存在するかどうかを同期的にチェックする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] ES6のPromise.all()を使用する際に、並行処理を制限する最善の方法は何でしょうか?