Why setTimeout(fn, 0) and setTimeout(fn, 1) are same while sT(fn, 5) / sT(fn, 6) are not?(为什么setTimeout(fn,0)和setTimeout(fn,1)相同,而ST(fn,5)/ST(fn,6)不同?)
问题描述
已经有一段时间了,因为自2011、2012年以来就没有提出过这样的话题。 现在,此代码
setTimeout(()=>{ console.log(1); }, 1);
setTimeout(()=>{ console.log(2); }, 0);
setTimeout(()=>{ console.log(3); }, 2);
将打印1-2-3,即使您预期记录%2的速度快于%1。
您可以通过向";指出,所有小于4ms的超时都将延迟到4ms";来解释这一点。
或者说大约13毫秒,就像-当执行第二行时,第一行已经清除时间并被记录,但是不,如果我们使用2-3毫秒的时间,这两个规则都不适用。在这种情况下,一切正常运行证明:
setTimeout(()=>{ console.log(1); }, 3);
setTimeout(()=>{ console.log(2); }, 2);
setTimeout(()=>{ console.log(3); }, 2);
不会应用MS Order规定的-2在1之前记录的规则。
此行为在Chrome 84中得到满足。 火狐正在按顺序执行所有这些代码,无论有什么微软。1-2或3-2或6-5等 原来Chrome的1ms和0ms是相同的,而5-6或2-3是不同的 PS:OPERA的行为也像Chrome一样。将1毫秒视为0,将2毫秒视为1毫秒
为什么?
推荐答案
,因为在调用排队的代码块时已过了1ms。看到第一个在队列前面并且超时时间已过,它将被执行。
这篇关于为什么setTimeout(fn,0)和setTimeout(fn,1)相同,而ST(fn,5)/ST(fn,6)不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么setTimeout(fn,0)和setTimeout(fn,1)相同,而S
基础教程推荐
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 直接将值设置为滑块 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01