setTimeout回调具体什么时候放入宏任务队列?

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

在 JavaScript 事件循环中的哪个点,它会发现计时器已达到其目标时间,需要将其放置在 MacroQueue 上?它是在完成每个 MacroQueue/microQueue 任务之后还是在整批 MacroQueue/microQueue 任务之后执行此检查?事件循环有一定的顺序来运行这些任务,我想知道回调实际上在这个过程中的哪个位置添加到了宏队列中;我不是在问回调本身何时被处理。 webapi 到底如何在事件循环执行顺序内将该回调获取到该队列中。

javascript webapi event-loop
1个回答
0
投票

没关系,任何情况下结果(任务正在处理)都是一样的。

它可能在任何时间点发生,尽管事件循环在选择下一个要处理的宏任务时检查过期的计时器是有意义的。或者,可能有一个并发(读:并行线程)进程在计时器持续时间内休眠,或者收到操作系统的通知,并在任意时刻将任务放入相应的队列中,完全独立于事件循环执行。

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