10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

setInterval()の各ブラウザのバックグラウンドでの動作を調べてみた

Posted at

動機

JavaScriptを書いてる際によくお世話になっているsetInterval()。
これがブラウザがバックグラウンドになった際にどんな動作をしているのかちゃんと確認したことが無かったので確認をしてみたくなった。

確認した環境

  • Mac
    • Chrome(最新版)
    • Firefox Nightly
    • Safari11
  • Windows10
    • Edge
    • IE11

バックグラウンド時の仕様

MDNのドキュメントには以下のようにある。

バックグラウンドのタブによる負荷 (およびバッテリー消費) を軽減するため、アクティブ状態でないタブでのタイマーの呼び出しは、1 秒 (1000 ms) あたり 1 回までとなります。

Firefox はこの動作をバージョン 5 (バグ 633421 を参照。1000 ms の定数は設定項目 dom.min_background_timeout_value で変更できます) から、Chrome はこの動作をバージョン 11 (crbug.com/66078) から実装しています。

MDNの遅延が長い理由より引用

果たして本当にそうなっているのか。。。

確認用コード

let count = 0;
setInterval(() => {
  count++;
  console.log(count);
}, 100);

結果

  • Chrome、Firefox Nightly、Safari11、Edge
    • ドキュメント通りの実装。バックグラウンドでは最小遅延時間が1秒になった。
  • IE11
    • 100msの遅延時間は変わらず実行され続けた。

さすがはIE11。ブレない。

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?