JS引擎如何知道是否有回调等待执行?

问题描述 投票:0回答:1

据我所知,当有setTimeout时,计时器webAPI被调用,一旦计时器完成,回调将被推送到回调队列。 一旦调用堆栈为空,事件循环就会从回调队列中获取消息并执行。

如果 setTimeout 为 1 小时并且调用堆栈为空,因为它完成执行全局执行上下文。现在回调队列中不会有任何回调函数,因为它会在计时器 API 完成(1 小时)后推送到队列一次。事件循环检查调用堆栈是否为空,甚至在回调队列中它也会为空。 JS引擎如何等待1小时?

js引擎如何跟踪不在回调队列中的回调函数。

javascript callback
1个回答
0
投票

JS 引擎有我们所说的 事件循环

Event Loop

当您调用

setTimeout
时,该函数通过将其放入回调队列来安排 scheduling 回调的执行。回调队列不会将尚未计划执行的函数推入事件队列。

© www.soinside.com 2019 - 2024. All rights reserved.