首页 > 解决方案 > 为什么在函数执行后调用`setTimeout`回调,即使延迟为0毫秒?

问题描述

setTimeout(function(){
  console.log("m");
}, 0);
console.log("s");

即使回调应该等待 0 毫秒,为什么这段代码会"s"在之前打印?"m"setTimeout

标签: javascriptsettimeoutevent-loop

解决方案


浏览器或 node.js 始终运行单线程事件循环来运行您的代码。在第一次运行时,它将始终运行您的同步代码,但也可能会排队稍后将回调的异步事件。这就是我们在这里调用该函数的原因,callback function它稍后会被调用。

setTimeout是一个微任务。

这意味着function你看到的不是立即执行的,它会首先排队并在下一个事件循环中执行。

还有一个副作用:0 ms只是意味着它将最小等待0 ms不精确 0


推荐阅读