これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

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 勧告案 初期定義

ブラウザ互換性

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 手助けしていただける場合は、こちらから!

機能 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,