javascript - 等待嵌套的 forEach 行为

标签 javascript node.js

为什么这个片段

const firstArray = ['toto', 'toto'];
const secondArray = ['titi', 'titi'];
firstArray.forEach(async (toto, i) =>
{
  await secondArray.forEach(async titi =>
  {
    // async code
    console.log(titi, i);
  });
  // async code
  console.log(toto, i);
});

产生以下输出:

output

删除 await 关键字会产生预期的输出

enter image description here

我的猜测是它存在于 await 关键字的行为中,因为没有它,生成的输出就是预期的输出。

编辑:这纯粹是一个微不足道的问题。我想了解为什么在 forEach 之前使用 wait 提供这种行为。这背后没有“具体代码”。

EDIT2:编辑了代码片段,因为评论和答案反射(reflect)了对我的问题的误解

最佳答案

forEach 同步工作,这意味着它不会对每次迭代的返回(在本例中为 promise )执行任何操作,并且会忽略它。

如果您使用:

for(let item of arrayItems)

或者普通的 for 循环,您应该会看到异步工作的预期结果。

关于javascript - 等待嵌套的 forEach 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49874403/

相关文章:

javascript - 在类方法中访问对象属性

javascript - 如何在 promise 链中传递变量?

javascript - Node.js 从 do while 循环中调用异步函数

javascript - 如何突出显示列表中的随机单词

javascript - 我的 CSS 或 JavaScript 都没有修改 <div> 标签

javascript - 如何在重新渲染时将固定大小的 div 从一个容器平滑过渡到另一个容器?

javascript - 如何使滚动折叠导航导航栏固定顶部?

node.js - 自定义 Socket.IO 中间件错误事件?

javascript - 当出现异步超时错误时,如何使用 jest 测试 Express 应用程序?

Javascript/Node/Express : res. json需要等待一个函数运行完毕才返回...但是res.json不耐烦?