Promise.all() の利用
Jan 21, 2025 am 12:30 AM
await
を 1 回使用して、複数の非同期プロセスを待機します。
JavaScript の強みの 1 つは、プロセスが互いに待機することを避けるために非同期操作を実行できることです。実際のアプリケーションでは、非同期操作は、待ち時間がネットワーク接続やストレージ速度などの外部要因に依存するプロセスによく使用されます。非同期操作の例をいくつか示します:
- データベースクエリ
- 他の Web サイトからデータを取得する (HTTP リクエスト)
- ファイルの読み取りと書き込み
- メールを送信
非同期関数の実行
JavaScript では、非同期操作は通常、関数を使用して実装されます。関数とは、合計を計算する加算関数やコンピューターをシャットダウンするシャットダウン関数 (そのような関数があるかも知れません) など、特定のタスクを実行するコード ブロックのセットです。
関数を定義
非同期関数を定義するには、関数の宣言時に async
キーワードを追加するだけで、後は通常の関数と同じです。
たとえば、メールを非同期に送信する関数を定義します。
async function kirimEmail(tujuan, judul, isi) { // 发送邮件 // ... }
またはアロー関数を使用します:
const kirimEmail = async (tujuan, judul, isi) => { // 发送邮件 // ... }
関数の呼び出し
上記の関数が呼び出されると、自動的に非同期で実行されます。つまり、相互に待機することはありません。
例:
kirimEmail('contoh1@email.com', 'Tes 1 Email', 'Halo. Ini saya lagi ngetes.'); kirimEmail('contoh2@email.com', 'Tes 2 Email', 'Halo. Ini saya lagi ngetes.'); kirimEmail('contoh3@email.com', 'Tes 3 Email', 'Halo. Ini saya lagi ngetes.');
上記の例では、電子メールを送信するすべてのプロセスが順番に実行されますが、完了を待つプロセスはありません。したがって、前のプロセスが完了していない間に次のプロセスが開始され、相互にブロックされません。
データを取得する必要がある場合、または非同期プロセスが完了するのを待つ必要がある場合は、関数を呼び出すときに await
キーワードを使用できます。
例:
await kirimEmail('contoh1@email.com', 'Tes 1 Email', 'Halo. Ini saya lagi ngetes.'); await kirimEmail('contoh2@email.com', 'Tes 2 Email', 'Halo. Ini saya lagi ngetes.'); await kirimEmail('contoh3@email.com', 'Tes 3 Email', 'Halo. Ini saya lagi ngetes.');
この例では、各プロセスは前のプロセスが完了するまで待機します。これは通常、あるプロセスから次のプロセスのためにデータをフェッチする必要がある場合に発生するため、必要なデータをフェッチする前に前のプロセスが完了するまで待つ必要があります。
Promise.all()
Promise.all
を使用すると、複数の非同期関数を同時に呼び出して待機できます。
関数の呼び出し
Promise.all
を使用して複数の非同期関数を呼び出す例は次のとおりです。
await Promise.all([ kirimEmail('contoh1@email.com', 'Tes 1 Email', 'Halo. Ini saya lagi ngetes.'), kirimEmail('contoh2@email.com', 'Tes 2 Email', 'Halo. Ini saya lagi ngetes.'), kirimEmail('contoh3@email.com', 'Tes 3 Email', 'Halo. Ini saya lagi ngetes.'), ]);
上記の例では、3回のメール送信処理の完了を待ち、成功・失敗に関わらず結果が配列で返されます。
特徴
Promise.all
には次のプロパティがあります:
- 実行される非同期関数は配列に配置されます。 すべての関数は、起動から完了まで全体として実行されます。
- これらは全体として機能するため、特に
- が使用されている場合は、すべてのプロセスが完了するまで待機します。
await
いずれかのプロセスでエラーが発生した場合、すべてのプロセスがエラーを報告します。 - 詳細については、MDN の
結論
Promise.all
を使用すると非常に便利です。await
? を 1 回記述するだけで済みます。また、プロセスの 1 つがエラーになった場合にすべてのプロセスを停止したい場合にも便利です。ただし、1 つのプロセスが失敗しても他のプロセスの実行を継続したい場合は、次の記事で説明します。
読んでいただきありがとうございます。議論したい場合は、メッセージを残してください。友達を作りたい場合は、私に知らせてください?
以上がPromise.all() の利用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









