Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Reactjs 当Chrome选项卡处于非活动状态时,内存堆会增加_Reactjs_Google Chrome_Highcharts_Tabs_Setinterval - Fatal编程技术网

Reactjs 当Chrome选项卡处于非活动状态时,内存堆会增加

Reactjs 当Chrome选项卡处于非活动状态时,内存堆会增加,reactjs,google-chrome,highcharts,tabs,setinterval,Reactjs,Google Chrome,Highcharts,Tabs,Setinterval,使用React和HighCharts构建仪表板,使用setInterval每10秒刷新一次 当浏览器选项卡处于活动状态时,不存在内存堆问题 当浏览器选项卡处于非活动状态时,内存堆会不断增加 当打开“备份”选项卡时,内存堆中会立即下降 真正的问题是,当tab长时间处于非活动状态时,我的web应用程序会冻结 内存堆的屏幕截图: 更新: 看来这就是问题所在: 当选项卡处于非活动状态时,Chrome不会调用requestAnimationFrame() 人们如何解决这个问题 如果看不到仪表板,实

使用React和HighCharts构建仪表板,使用setInterval每10秒刷新一次

  • 当浏览器选项卡处于活动状态时,不存在内存堆问题
  • 当浏览器选项卡处于非活动状态时,内存堆会不断增加
  • 当打开“备份”选项卡时,内存堆中会立即下降
真正的问题是,当tab长时间处于非活动状态时,我的web应用程序会冻结

内存堆的屏幕截图:

更新:

看来这就是问题所在:

当选项卡处于非活动状态时,Chrome不会调用
requestAnimationFrame()


人们如何解决这个问题

如果看不到仪表板,实际上不需要更新它。如果chrome有这个问题,我建议在它处于非活动状态后,在重新聚焦时只更新一次。当处于非活动状态时,只需在间隔中的每个循环中不执行任何操作

var IsFocused = true;
window.onfocus = function() {
    IsFocused = true;
}
window.onblur = function() {
    IsFocused = false;
}

var myinterval = setInterval(function() {

    if(!IsFocused) return;
    some dashboard update code here...

}, 10000);
现在,如果问题仅仅是在选项卡处于非活动状态时间隔正在运行,那么您也可以这样做:

var myinterval;
function StartInterval() {

    clearInterval(myinterval);
    myinterval = setInterval(function() {

        some dashboard update code here...

   }, 10000);

}
StartInterval(); //Start on first load.
window.onfocus = function() {

    StartInterval();

}
window.onblur = function() {

    clearInterval(myinterval);

}