我有一个关于 Javascript 的单线程性质的问题。
console.log("1");
setTimeout(function(){console.log("2");},3000);
console.log("3");
setTimeout(function(){console.log("4");},1000);
这段代码的结果是1 3 4 2
。如您所见,4
是在之后2
,这让我想知道在单线程环境中不2
应该在之后4
?如果没有,那么 JS 怎么知道第二个setTimeout
应该在第一个之前完成?不应该有两个线程同时工作来完成两个setTimeout
s 以便通知EventLoop
吗?