javascript - 为什么在函数执行后调用`setTimeout`回调,即使延迟为0毫秒?
问题描述
setTimeout(function(){
console.log("m");
}, 0);
console.log("s");
即使回调应该等待 0 毫秒,为什么这段代码会"s"
在之前打印?"m"
setTimeout
解决方案
浏览器或 node.js 始终运行单线程事件循环来运行您的代码。在第一次运行时,它将始终运行您的同步代码,但也可能会排队稍后将回调的异步事件。这就是我们在这里调用该函数的原因,callback function
它稍后会被调用。
setTimeout
是一个微任务。
这意味着function
你看到的不是立即执行的,它会首先排队并在下一个事件循环中执行。
还有一个副作用:0 ms
只是意味着它将最小等待0 ms
不精确 0
推荐阅读
- python - 正则表达式模式查找最多包含 3 个字母数字字符的所有字符串
- jquery - jQuery Accordion 仅以奇数顺序工作
- java - Chromedriver.exe 被视为来自 IntelliJ 的文件
- javascript - tilda + ajax (post) 或 XMLHttpRequest mobile 不发送
- qt - qmake 中的 host_build 是什么?
- node.js - 当我发送删除请求时,它返回“成功删除”虽然当我检查我的数据库时该项目仍然存在?
- laravel - 在带有 Tailwind CSS 的 Laravel 8 中,如何定义覆盖 app.css 的 backend.css?
- c# - 为什么 DataContractSerializer.ReadObject 在 NamedPipeClientStream 上失败/挂起?
- database - 如何对表征多个独立实体的特征实体进行建模
- docker - 是什么导致 docker 容器中供应商目录中的文件更新?