为什么这个片段
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);
});
产生以下输出:
删除 await
关键字会产生预期的输出
我的猜测是它存在于 await
关键字的行为中,因为没有它,生成的输出就是预期的输出。
编辑:这纯粹是一个微不足道的问题。我想了解为什么在 forEach 之前使用 wait 提供这种行为。这背后没有“具体代码”。
EDIT2:编辑了代码片段,因为评论和答案反射(reflect)了对我的问题的误解
最佳答案
forEach 同步工作,这意味着它不会对每次迭代的返回(在本例中为 promise )执行任何操作,并且会忽略它。
如果您使用:
for(let item of arrayItems)
或者普通的 for 循环,您应该会看到异步工作的预期结果。
关于javascript - 等待嵌套的 forEach 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49874403/