使用一次
await
等待多个异步进程。
JavaScript 的一个强大之处在于它能够进行异步 (asynchronous) 操作,避免进程间的相互等待。在实际应用中,异步操作常用于等待时间取决于外部因素的进程,例如网络连接、存储速度等。以下是一些异步操作的例子:
在 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>
在上述示例中,我们等待三个发送邮件进程的完成,无论成功或失败,结果都将以数组的形式返回。
Promise.all
的特性如下:
await
的情况下;更多详细信息请参考 MDN 的 Promise.all
文档。
使用 Promise.all
非常方便,我们只需要写一次 await
?,并且如果我们希望在其中一个进程出错时停止所有进程,它也很有用。但是,如果我们希望即使某个进程出错也能继续执行其他进程,我们将在下一篇文章中讨论。
感谢您的阅读。如果您想讨论,请留言。如果您想交朋友,请告诉我 ?
以上是使用 Promise.all()的详细内容。更多信息请关注PHP中文网其他相关文章!