setIntervalまたは一連の を実行していますsetTimeout。
それぞれがキューに入れられ、関数で指定したポイントの後に実行されます。
Google は、あなたのページのすべてを 1 秒ごとに数回の更新に絞り込みます... ...物事を動かしたり 30fps などでアニメーション化するようにタイマーを設定した場合、Google は更新を 1 回実行します (スケジュールしたものは何でも)、間違いなく別の更新を要求する何かを呼び出し、別の更新を要求します...
...元に戻すと、数百 (または数万) のこれらの更新が発生するのを待っていて、30 fps で発生する代わりに、これらのものがたくさん待っています... それらはすべて過ぎてしまいました「次まで実行しないでください...」時間であり、タイマーが再び現在の場所に追いつくまで、物理的に可能な限り速く更新しようとします。
ブラウザーが page-visibility API のコンポーネントをサポートしている場合は、ページが表示されていないときに呼び出しを一時停止します。
if (!document.hidden) { doStuff(); }
また
document.addEventListener("visibilitychange", function (evt) {
if (evt.visibilityState === "hidden") { myApp.pause(); }
else if (evt.visibilityState === "visible") { myApp.resume(); }
});
API をサポートしていない場合は、 などを使用してポリフィルを試すことができwindow.onblurます。
とはいえ、ブラウザがページ可視性 API をサポートしていない場合、ページ コードのハードコア スロットリングも行わない可能性があります。
これは 100% の保証ではなく、ある程度の可能性です。