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