我有一段代码就是这样使用setTimeout
方法的
setTimeout(() => {
console.log('Hello');
},1000);
对于100ms或1s的持续时间,setTimeout
方法在哪里?它是否被传递到系统内核,直到回调准备好执行,还是V8将它传递到了另一个队列?
() => {
console.log('Hello');
}
这是在超时间隔之后执行的函数。
根据您编写的setTimeout方法,它至少等待1000ms,然后在所有当前任务执行完毕后执行console.log方法,因为它放在队列的后面
它在libuv上排队。V8引擎具有执行堆栈。当times up和主线程可用时,v8引擎更改其执行堆栈并运行函数。
有关“定时器初始化步骤”,请参见规范:
完成后,函数将被执行;函数的任务只在此点之后才进入队列。在这一点之前,它只存在于浏览器的内部(依赖于实现)计时器代码内部。