setTimeout 是一个宏任务,对吗?据我了解,事件循环在 1 个“tick”中仅执行 1 个宏任务。那么,为什么这些函数看起来像是在事件循环的一个“tick”中执行的呢?我的意思是,只是在一个 1000 毫秒的延迟中,而不是在三个 1000 毫秒的延迟链中。
setTimeout(() => console.log("First"), 1000)
setTimeout(() => console.log("Second"), 1000)
setTimeout(() => console.log("Third"), 1000)
您的所有 setTimeouts 都是相互独立的。它们将被推送到回调队列,而不等待第一个被执行。