关于settimeout 奇怪的输出

发布于 2022-09-13 00:58:28 字数 323 浏览 13 评论 0

  setTimeout(() => {
    console.log('a')
  }, 1)

  setTimeout(() => {
    console.log('b')
  }, 0)

  setTimeout(() => {
    console.log('c')
  }, 10)
  setTimeout(() => {
    console.log('d')
  }, 4)

for(let i = 0;i<1000;i++){
  console.log(100);
}
结果是a、d、c、b

测试环境:chrome控制台

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

乖乖公主 2022-09-20 00:58:28

为了解答这个问题:我测试了 Chrome/Edge/Safari/Firefox。(都是最新浏览器)

Chrome: a b d c
Edge:a d c b ( 如果去掉后面的循环,顺序为:a b d c)
Safari: a b d c
Firefox: b a d c

浏览器内部也是不断再调整,所以不要太纠结这种问题,但是关于 setTimeout 还是有些知识点要关注下,

比如:4ms 是怎么回事?

https://html.spec.whatwg.org/...

https://developer.mozilla.org...

以及与 promise 相关的任务队列执行顺序问题。

望有些帮助。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文