1. ホーム
  2. javascript

[解決済み] Chrome:バックグラウンドのタブでタイムアウト/インターバルが中断?

2022-04-26 01:03:57

質問

の精度をテストしていました。 setTimeout を使って このテスト . 今、私は(予想通り)次のことに気づきました。 setTimeout はあまり正確ではありませんが、ほとんどの家電製品では劇的に不正確というわけではありません。今、私がChromeでテストを実行し、バックグラウンドのタブで実行させ(そう、別のタブに切り替えてそこでブラウズする)、テストに戻り、結果を検査すると(テストが終了した場合)、それらは劇的に変化しています。タイムアウトの実行がかなり遅くなったような気がします。FF4やIE9でテストしたところ、このようなことは起こりませんでした。

つまり、Chrome はフォーカスのないタブで javascript の実行を一時停止するか、少なくとも遅くしているようです。この件に関しては、インターネットで調べてもあまり出てきません。例えば、XHRコールを使ってサーバー上で定期的にチェックするようなバックグラウンドタスクが実行できないことになります。 setInterval (私は、同じ動作を setInterval 時間があれば、テストを書いてみます。)

どなたかこのようなことに遭遇された方はいらっしゃいますか?この停止/減速の回避策はあるのでしょうか?これはバグと呼ばれるもので、そのように報告すべきでしょうか?

解決方法は?

最近質問したのですが、これはデザインによる動作です。タブが非アクティブのとき、最大で1秒に1回だけこの関数が呼ばれます。以下がその例です。 コード変更 .

もしかしたら、これが役に立つかもしれません。 Chrome でタブが非アクティブのときにも setInterval を動作させるにはどうしたらいいですか?

TL;DR: 使用 ウェブワーカー .