javascript - async/await 如何与 forEach 一起使用?

标签 javascript asynchronous async-await

如何使用async/await来实现以下目的?

self.onmessage = event => {

  // async stuff in forEach needs to finish
  event.data.search.split(',').forEach((s, i) => {
    db.get('customers').then(doc => {
      ...
    })
  })

  // before getting here
}

最佳答案

您需要使用 Promise.all 并将对 Array#forEach 的调用替换为 Array#map:

self.onmessage = async (event) => {

  // async stuff in forEach needs to finish
  await Promise.all(event.data.search.split(',').map((s, i) => {
    return db.get('customers').then(doc => {
      ...
    })
  }))

  console.log('All finished!')

}

关于javascript - async/await 如何与 forEach 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42615473/

相关文章:

javascript - 如果选中 2 个特定复选框则显示 DIV,如果仅选中一个则显示不同的 DIV

c# - 在 Rx Finally 中使用 async () => 的替代方法

javascript - 为什么 `async/await` 在我的情况下不起作用?

javascript - 将来自 ArrayBuffer 的 chrome.sockets.tcp api 的服务器响应转换为字符串时出现奇怪的错误

javascript - 基于另外 2 个对象创建一个对象

javascript - 如果已经有 API 调用正在进行,如何确保我不会再次调用 API(通过单击按钮)?

javascript - 为什么只有当我更改被调用函数语法时,我的异步函数才能正常工作?

c# - Asp.Net MVC、WebApi 和正确的异步方法

c# - Async WebRequest 卡住应用程序

javascript - 用于使用 jquery 添加的内容中的链接的函数