小编Bar*_*dys的帖子

调用堆栈和事件循环 - 为什么要等待空堆栈?

我知道当调用堆栈为空时,消息从队列进入调用堆栈.如果事件循环可以将消息从队列直接推送到调用堆栈而不等待,那会不会更好?这种行为背后的原因是什么?如果事件循环会在确切的时间推送消息,我们总是可以依赖于setTimeout等函数.

setTimeout(() => console.log("I want to be logged for 10ms, but I will never be :("), 10);

// some blocking operations
for(let i = 0; i < 500000000; i++){
  Math.random() * 2 + 2 - 3;  
}

console.log("I'll be logged first lol");
Run Code Online (Sandbox Code Playgroud)

由于一致性原因,它可能永远不会改变,但我仍然很好奇.也许我没有看到任何东西,并且在等待空堆栈的概念背后存在严重的技术原因.您是否可以访问有关JS中的体系结构决策的文章,或者您可能知道在需要此行为时的基本示例?有很多关于JS如何工作的文章,但我找不到类似"为什么事件循环完全按照这种方式工作"的内容.任何帮助将不胜感激.

javascript v8 event-loop

1
推荐指数
1
解决办法
289
查看次数

标签 统计

event-loop ×1

javascript ×1

v8 ×1