怎么理解Javascript的Event Loop

新手上路,请多包涵

举个例子:

setTimeout(() => { console.log('Hello') }, 1000);
for(var i = 0; i < 100000; i++) {
  console.log(i);
}

在执行setTimeout的时候,一个1s的定时器应该就会被启动。然后继续执行下面的的for循环。那么在执行for循环的时候(至少前1s的时间段内),这个定时器也同时在ticking。

但JS程序在运行过程中是单线程的,那是不是说这个定时器其实是由其他外部的库或工具执行的,比如Node中的libuv?

阅读 3k
2 个回答

setTimeout()会在1s以后加入到事件队列中,也就是说,并不是在启动定时器后1s执行函数。在你上面的例子中,会在for循环完成以后,将定时器里的函数加入到事件队列并在1s以后执行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题