これは実験段階の機能です。
この機能は複数のブラウザーで開発中の状態にあります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザーの将来のバージョンで変更になる可能性があることに注意してください。

window.requestIdleCallback() メソッドを利用すると、ブラウザーがアイドル状態の時に実行される関数をキューに登録できます。これにより、アニメーションや入力への応答など、遅延が問題となる処理に影響を与えることなく、優先度の低いバックグラウンド処理をメインスレッド内で実行させられます。キューに登録された関数は、関数登録時に設定したタイムアウト時間(timeout)に達していない限り、登録順に呼び出されます。

requestIdleCallback() をアイドルコールバック関数からコールし、次のイベントループ以降で実行されるようにスケジュールもできます。

timeout は必須のタスクにおいては設定することを強くおすすめします。設定しない場合、コールバックが実行するまでに数秒かかってしまう可能性もあるからです。

構文

var handle = window.requestIdleCallback(callback[, options])

返り値

Window.cancelIdleCallback() メソッドで、実行をキャンセルする際に使用するIDを返します。

引数

callback
イベントループがアイドル状態のときに実行したい関数への参照。コールバック関数には IdleDeadline オブジェクトが渡されます。これはアイドル状態の際に余っている時間と、コールバックが実行されたかされていないかを示します。コールバックの実行有無は、タイムアウト期間が終了してしまったかどうかに左右されます。
options Optional
任意の設定パラメータです。現在はひとつのプロパティのみ定義されています。
  • timeouttimeout に正の値が指定され、かつコールバックがその値の期間(ミリ秒)内に実行されていない場合、コールバックは次のアイドル期間に実行されます。それがパフォーマンスに悪影響があったとしても、それを加味することはありません。

Example

Cooperative Scheduling of Background Tasks APIの記事で、例を一式紹介しています。

仕様

仕様 状態 コメント
Cooperative Scheduling of Background Tasks 勧告案 初期定義

ブラウザ互換性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
基本機能 47 未サポート 55 (55) 未サポート 34 未サポート
機能 Android Webview Chrome for Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile
基本機能 47 47 55.0 (55) ? 未サポート ? 未サポート

Firefox 53で実装されましたが、デフォルト無効にされていました。Firefox 55からデフォルト有効になっています。

ドキュメントのタグと貢献者

このページの貢献者: myakura, chikoski
最終更新者: myakura,