【问题标题】:What will be executed first in Node.js/Javascript Event Loop among setInterval(()=>{}, 5000) and setTimeout(()=>{}, 5000)?在 Node.js/Javascript 事件循环中,setInterval(()=>{}, 5000) 和 setTimeout(()=>{}, 5000) 之间首先会执行什么?
【发布时间】:2019-08-28 20:35:04
【问题描述】:

由于两者都属于 Javascript/Node.js 中事件循环的“计时器”阶段 -

let racer = function () {
  setInterval(() => { console.log('Interval is here') }, 2000);
  setTimeout(() => { console.log('Timeout is here') }, 2000);
}

只是在寻找上述代码 sn-p 的初始执行顺序?

【问题讨论】:

  • 我所知道的所有 JavaScript 平台都遵循计时器注册的顺序,因此您的间隔计时器会在超时之前触发。
  • 首先执行setInterval,然后执行setTimeout。至于哪个callback会先触发,几乎可以保证是interval,然后是timeout。
  • 那么在这种情况下只需要订购吗?

标签: javascript node.js asynchronous callback event-loop


【解决方案1】:

W3C specification 似乎没有表明list of active timeoutslist of active intervals 之间的任何优先级。

因此,racer 函数的执行顺序取决于浏览器的实现。

【讨论】:

  • 这就是我的问题。我还没有找到这样的概念。对于少数人来说,这似乎是一个愚蠢的问题,但没有给出实际的证据或解释。感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 2022-06-11
  • 1970-01-01
相关资源
最近更新 更多