为什么setTimeout会这样执行

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

代码:

setTimeout(() => console.log('1'), 1000)

for (let i = 0; i < 10000; i++) {
  for (let j = 0; j < 10000; j++) {}
}

setTimeout(() => console.log('2'), 0)
setTimeout(() => console.log('3'), 0)

该示例的输出是:

2
3
1

为什么会这样?
在此示例中,循环会阻塞线程 5 秒左右。此时第一个setTimeout应该已经完成并先出宏任务队列了,但事实并非如此。

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

在您的计算机上 10,000 * 10,000 只需不到 5 秒。

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