Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置超时和渲染周期_Javascript_Google Chrome_Firefox_Webkit_Rendering - Fatal编程技术网

Javascript 设置超时和渲染周期

Javascript 设置超时和渲染周期,javascript,google-chrome,firefox,webkit,rendering,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 wil

我很好奇在使用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
  • 正在退出设置超时#1
  • 渲染/喷漆事件#1
  • 输入setTimeout#2
  • 同步代码#2
  • 注册喷漆事件#2
  • 退出设置超时#2
  • 渲染/喷漆事件#2
我知道在铬合金中,绘画可以发生在主线程中,也可以委托给工作线程。
我不知道其他浏览器

那么,我的直觉正确吗?

  • 浏览器是否总是在每个设置超时周期之间执行挂起的渲染/绘制
  • 如果没有,在哪些情况下没有
  • 浏览器之间有区别吗?(Chrome、Firefox、IE……)

据我所见,它总是重新绘制或至少更新计算样式,因为我一直使用0毫秒的设置超时来强制更新计算样式,并且我的应用程序在最新的标准Chrome、Firefox和IE11上运行。不过,有可靠的消息来源也不错。