首页 > web前端 > js教程 > 使用 Promise.all()

使用 Promise.all()

Mary-Kate Olsen
发布: 2025-01-21 00:30:11
原创
827 人浏览过

Memanfaatkan Promise.all()

使用一次 await 等待多个异步进程。

JavaScript 的一个强大之处在于它能够进行异步 (asynchronous) 操作,避免进程间的相互等待。在实际应用中,异步操作常用于等待时间取决于外部因素的进程,例如网络连接、存储速度等。以下是一些异步操作的例子:

  • 数据库查询
  • 从其他网站获取数据 (HTTP 请求)
  • 读写文件
  • 发送邮件

异步函数的执行

在 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,我们可以同时调用和等待多个异步函数。

调用函数

使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板