setTimeout和渲染周期

时间:2015-03-30 13:23:56

标签: javascript google-chrome firefox webkit rendering

我很好奇使用javascript setTimeout时幕后实际发生的事情。

示例代码:

setTimeout(function(){
   // some sync js code #1 ...

   // some code that will trigger a render (change in the DOM) #1
});
setTimeout(function(){
   // some sync js code #2 ...

   // some code that will trigger a render (change in the DOM) #2
});

我猜想会发生的事情如下:

  • 输入setTimeout#1
  • 同步代码#1
  • 注册油漆事件#1
  • 退出setTimeout#1
  • 渲染/绘画油漆事件#1
  • 输入setTimeout#2
  • 同步代码#2
  • 注册油漆事件#2
  • 退出setTimeout#2
  • 渲染/绘画油漆事件#2

我知道在Chrome中,绘画可以在主线程中发生,也可以委托给工作线程 我不了解其他浏览器。

那么,我的预感是否正确?

  • 浏览器是否总是在每个setTimeout循环之间执行挂起的渲染/绘制?
  • 如果不是,在哪些情况下不是?
  • 浏览器之间是否存在差异? (Chrome,Firefox,IE ...)

0 个答案:

没有答案