javascript - 等待函数未并行发生

标签 javascript node.js asynchronous

我有一些异步代码当前正在被一条一条地执行。我知道有一种方法可以并行执行此操作,但无法找到要执行的语法。这就是目前的情况

async function someAsyncFunc(i) {
   await wait(i);
   return i;
}

async function wait(ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms);
  });
}

function doSomething() {
  const arr = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000];

  arr.forEach(item => {
    someAsyncFunc(item)
      .then(res => {
        console.log(res);
      })
  });
  console.log("finished");
}

doSomething();

任何帮助将不胜感激。

最佳答案

您非常接近您正在寻找的东西。您需要使用 Promise.all 并在其中使用 map。

顺便说一句,使用 forEach 的当前版本不正确,因为 Promise 不重视 forEach。您应该使用for...of

async function someAsyncFunc(i) {
  await wait(i);
  return i;
}

async function wait(ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms);
  });
}

function doSomething() {
  const arr = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000];

  Promise.all(arr.map(item => {
    return someAsyncFunc(item);
  }))
  .then(res => {
    console.log(res);
  });
}

doSomething();

关于javascript - 等待函数未并行发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60026713/

相关文章:

javascript - Netflix Falcor - 何时从数据源返回 pathValues 与 jsonGraph?

javascript - 使用 npm 在 html 中导入 javascript

node.js - 如何在消息中发送特定的(例如第二次或第三次)提及

node.js - 如何在 Node.js 中以非阻塞方式操作大型媒体文件

javascript - 将纬度和经度传递给 javascript 函数并从谷歌地图获取 View

javascript - 我需要用 javascript 实现一个简单的 .fadeIn

javascript - A 形框架中的灯光根据与它们的距离而产生条纹伪影

javascript - Node.js 应用程序中的 Controller 到底代表什么(MVC 架构)

reactjs - 使用 async componentDidMount() 好吗?

c# - C# 中的 async 和 wait 问题