事件循环在浏览器中运行的频率是多少?

时间:2016-08-23 18:42:36

标签: javascript

我知道定期运行事件循环以检查浏览器是否有任何事件,并检查任务队列。但是,这种情况多久发生一次?有设定的间隔吗?

我理解网页上的阻塞代码会阻塞事件循环,因为JavaScript是单线程的,但在异步代码中(阻塞最少)事件循环的运行频率是多少?

1 个答案:

答案 0 :(得分:-4)

事件线程不是按时间间隔触发的,而是来自OS的信号,它将事件添加到消息队列中,如键和鼠标事件,或者通过您自己的代码中的回调(如XHR和setTimeout)。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#Event_loop

主线程在:

之间共享
  • UI布局
  • JS执行

每当发生event(XHR回调,单击处理程序,setTimeout回调...)时,您的JS就会运行,但是在JS执行完之后UI才会更新。

有一种方法可以使用其他线程,WebWorkers,并且该代码无法访问DOM,因此它是线程安全的,可以无限期运行。

另请注意,每个window对象都有一个单独的线程。