gpt4 book ai didi

node.js - 使用 forEach 时与 Node.js 异步流程混淆。

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:14 25 4
gpt4 key购买 nike

我在 Node.js 中编码了 6 个月。我读过异步编码、事件循环和回调等概念。我知道“当同步代码堆栈执行时,异步代码永远不会执行。这就是node.js单线程的意义”。但这是一个例子

var a = [4, 5, 6, 7];
var results = [];

a.forEach(function(result){
results.push(result + 1);
});

console.log(results);

据我了解,函数 forEach 的参数是回调,稍后在同步块(synchronized block)执行完成后调用。这意味着我预计结果将是

[]

但事实就是如此

[5, 6 ,7, 8]

为什么会发生这种情况? forEach 是同步的吗?或者我错过了什么?据我了解,

console.log(results)

将在数据插入其中之前执行。

最佳答案

您传递给 Array.prototype.forEach() 的回调是同步的。因此,它会阻塞执行线程,直到完成将函数应用于数组的所有成员为止。

如果您想进一步研究 JavaScript 的异步性质,我还设法找到了一些有趣的读物:

关于node.js - 使用 forEach 时与 Node.js 异步流程混淆。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29206884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com