--- title: requestIdleCallback slug: Web/API/Window/requestIdleCallback tags: - API - HTML DOM - JavaScript timer - Reference - Window translation_of: Web/API/Window/requestIdleCallback --- <p>{{APIRef("HTML DOM")}}{{SeeCompatTable}}</p> <p><strong><code>window.requestIdleCallback()</code></strong> メソッドを利用すると、ブラウザーがアイドル状態の時に実行される関数をキューに登録できます。これにより、アニメーションや入力への応答など、遅延が問題となる処理に影響を与えることなく、優先度の低いバックグラウンド処理をメインスレッド内で実行させられます。キューに登録された関数は、関数登録時に設定したタイムアウト時間(<code>timeout</code>)に達していない限り、登録順に呼び出されます。</p> <p><code>requestIdleCallback()</code> をアイドルコールバック関数からコールし、次のイベントループ以降で実行されるようにスケジュールもできます。</p> <div class="note"><code>timeout</code> は必須のタスクにおいては設定することを強くおすすめします。設定しない場合、コールバックが実行するまでに数秒かかってしまう可能性もあるからです。</div> <h2 id="Syntax" name="Syntax">構文</h2> <pre class="syntaxbox notranslate"><code>var <em>handle</em> = <em>window</em>.requestIdleCallback(<em>callback</em>[, <em>options</em>])</code></pre> <h3 id="Returns" name="Returns">返り値</h3> <p>{{domxref("Window.cancelIdleCallback()")}} メソッドで、実行をキャンセルする際に使用するIDを返します。</p> <h3 id="Parameters" name="Parameters">引数</h3> <dl> <dt><code>callback</code></dt> <dd>イベントループがアイドル状態のときに実行したい関数への参照。コールバック関数には {{domxref("IdleDeadline")}} オブジェクトが渡されます。これはアイドル状態の際に余っている時間と、コールバックが実行されたかされていないかを示します。コールバックの実行有無は、タイムアウト期間が終了してしまったかどうかに左右されます。</dd> <dt><code>options</code> {{optional_inline}}</dt> <dd>任意の設定パラメータです。現在はひとつのプロパティのみ定義されています。 <ul> <li><code>timeout</code>:<code>timeout</code> に正の値が指定され、かつコールバックがその値の期間(ミリ秒)内に実行されていない場合、コールバックは次のアイドル期間に実行されます。それがパフォーマンスに悪影響があったとしても、それを加味することはありません。</li> </ul> </dd> </dl> <h2 id="Example" name="Example">Example</h2> <p><a href="/ja/docs/Web/API/Background_Tasks_API">Cooperative Scheduling of Background Tasks API</a>の記事で、<a href="/ja/docs/Web/API/Background_Tasks_API#Example">例を一式</a>紹介しています。</p> <h2 id="Specifications" name="Specifications">仕様</h2> <table class="standard-table"> <tbody> <tr> <th>仕様</th> <th>状態</th> <th>コメント</th> </tr> <tr> <td>{{SpecName('Background Tasks')}}</td> <td>{{Spec2('Background Tasks')}}</td> <td>初期定義</td> </tr> </tbody> </table> <h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ互換性</h2> <p>{{Compat("api.Window.requestIdleCallback")}}</p> <h2 id="関連情報">関連情報</h2> <ul> <li>{{domxref("window.cancelIdleCallback()")}}</li> <li>{{domxref("IdleDeadline")}}</li> <li>{{domxref("window.setTimeout()")}}</li> <li>{{domxref("window.setInterval()")}}</li> <li>{{domxref("window.requestAnimationFrame")}}</li> </ul>