提问者:小点点

Node.js事件循环和调用堆栈


我有一段代码就是这样使用setTimeout方法的

setTimeout(() => {
 console.log('Hello');
},1000);

对于100ms或1s的持续时间,setTimeout方法在哪里?它是否被传递到系统内核,直到回调准备好执行,还是V8将它传递到了另一个队列?


共3个答案

匿名用户

() => {
 console.log('Hello');
}

这是在超时间隔之后执行的函数。

根据您编写的setTimeout方法,它至少等待1000ms,然后在所有当前任务执行完毕后执行console.log方法,因为它放在队列的后面

匿名用户

它在libuv上排队。V8引擎具有执行堆栈。当times up和主线程可用时,v8引擎更改其执行堆栈并运行函数。

匿名用户

有关“定时器初始化步骤”,请参见规范:

完成后,函数将被执行;函数的任务只在此点之后才进入队列。在这一点之前,它只存在于浏览器的内部(依赖于实现)计时器代码内部。