影響あり ページ読み込み中に setTimeout()setInterval() が先送りされるようになりました

公開日:

カテゴリー: DOM, ネットワーキング

リリース: Firefox 66, Firefox 68 ESR

概要

Firefox 66 以降、ページ読み込み中に window.setTimeoutwindow.setInterval メソッドで追加されたタイマーは低い優先度をつけられ、空き時間が得られるか読み込みが完了するまで先送りされるようになります。

この変更は Google Docs のような複雑なウェブアプリケーションのパフォーマンス向上を意図したものですが、初期化コードが適切に設計されていない場合、予期せぬ競合状態が起きる可能性があります。Best Buy のサイトで 1 件のリグレッションが報告され、後にサイト側で修正されましたが、Mozilla の開発者によれば、この問題はおそらくリソースアクセス順が変わったことが原因と思われます。

ウェブ上のタイマーはそれほど正確ではないということを忘れずにいましょう。ブラウザーのタブが背面にある場合など、様々な理由で 指定したよりも長く掛かる場合があります

更新: Firefox 68 で XHR 最終イベントにも同様の変更が行われました。

更新 2: Firefox 69fetch() にも同様の変更が行われました。

参考資料