gpt4 book ai didi

node.js - 哪个事件循环阶段执行普通 JavaScript 代码

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

我是 Node.js 的新手,对理解事件循环有点困惑。据我所知https://github.com/nodejs/node/blob/master/doc/topics/event-loop-timers-and-nexttick.md ,事件循环阶段仅处理 setTimeout、setInterval、setImmediate、process.nextTick、promise 和一些 I/O 回调。

我的问题是,如果我有以下代码:

for (var i = 0; i < 100000000; i++) ;

上面的代码将在哪个阶段执行?

最佳答案

常规 JavaScript 代码(如示例中的 for 循环)会在队列被清除之前执行。 Node 要做的第一件事就是运行您的代码,并且仅在代码完成后调用回调、超时结果、I/O 结果等。

作为示例,您可以尝试以下代码:

fs.open('filename', 'r', () => {
console.log('File opened.');
});

for (var i = 0; i < 100000000; i++);

console.log('Loop complete.');

无论循环变量有多大或多小,“循环完成”将始终出现在“文件已打开”之前。这是因为只有一个线程,在循环代码完成之前,node 无法运行您提供给 fs.open 函数的回调。

请记住, Node 不不断返回到“主”线程。大多数长时间运行的 Node 程序都会很快运行完 main.js 中的代码,后续代码都将来自回调。初始执​​行的目的是定义这些回调发生的方式和时间。

关于node.js - 哪个事件循环阶段执行普通 JavaScript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41698848/

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