如何在 Async/Await 函数中使用 forEach 循环

发布于 2022-06-10 13:06:43 字数 1189 浏览 896 评论 0

你不 应该 forEach() 一个异步函数,因为没有办法处理错误。

// Unhandled promise rejection!
[1, 2, 3].forEach(async() => {
  await new Promise(resolve => setTimeout(resolve, 10));
  throw new Error('Oops!');
});

而不是使用 arr.forEach(myAsyncFunction),你应该使用 Promise.all(arr.map(myAsyncFunction)),它可以让您捕获错误。

Promise.
  all([1, 2, 3].map(async() => {
    await new Promise(resolve => setTimeout(resolve, 10));
    throw new Error('Oops!');
  })).
  catch(err => {
    err.message; // Oops!
  });

并联与串联

使用 Promise.all(arr.map(myAsyncFunction)) 执行 myAsyncFunction 关于所有元素 arr 而 并联 不是 串联 。
执行 myAsyncFunction 关于所有元素 arr 在系列中,您应该使用 for/of 环形。
我们建议使用 for/of 而不是 forEach() 一般用于遍历数组

for (const el of arr) {
  await myAsyncFunction(el);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

辞取

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

亚希

文章 0 评论 0

cyp

文章 0 评论 0

北漠

文章 0 评论 0

11223456

文章 0 评论 0

坠似风落

文章 0 评论 0

游魂

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文