DOM

Window.requestIdleCallback() メソッド

 編集:2022.09.15 by T.A.

[Edge]。→

実験的: これは実験的な機能です。本番で使用する前にブラウザー互換性一覧表をチェックしてください。

Window のブラウザーがアイドル状態の時に実行される指定のコールバック関数の処理を要求します。

mdn: ブラウザーがアイドル状態の時に実行される関数をキューに登録できます。

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

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

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

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

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

記述サンプル:

taskHandle = requestIdleCallback(runTaskQueue, { timeout: 1000 });

テスト