アイドルコールバック群呼び出しアルゴリズム

アイドルコールバック群呼び出しアルゴリズム

仕様書

IdleRequestCallback

[60] コールバック関数は、 Web IDL ではコールバック関数データ型 IdleRequestCallback >>1 と呼ばれています。

[61] コールバック関数は、引数として IdleDeadline を1つ受け取ります >>1

[62] コールバック関数返し値は使われません >>1

実行期限

[21] コールバック関数は、短い時間で実行完了することが期待されています。

[22] 引数IdleDeadline オブジェクトtimeRemaining メソッドにより、 アイドル期間の残り時間が得られます。

[23] とはいっても、コールバック関数の実行自体は通常の方法で行われるものですから、 残り時間が 0 になってもそれが理由で実行が中断されることはありません。

処理

[3] イベントループ締切に関するアイドルコールバック群呼び出しアルゴリズム (invoke idle callbacks algorithm) は、 次のようにしなければなりません >>4

  1. [5] 文書群を、イベントループ文書文書のうち、 文書完全に活性で、 文書Window走らせられるアイドルコールバック群のリストが空でないもののリストに設定します。
  2. [9] 文書群が空なら、
    1. [10] ここで停止します。
  3. [6] を、現在時刻に設定します。
  4. [7] < 締切なら、
    1. [8] 文書を、文書群のいずれかの文書に設定します。
    2. [11] 項目を、文書Window走らせられるアイドルコールバック群のリストpop した結果に設定します。
    3. [12] 文書Window走らせられるアイドルコールバック群のリストが空なら、
      1. [13] 文書文書群から削除します。
    4. [14] アイドル締切を、新しい IdleDeadline に設定します。
      締切
      締切
      didTimeout
    5. [15] コールバック関数の実行をします。
      呼び出し可能
      項目コールバック
      引数リスト
      (アイドル締切)
      this
      例外投げられたら、例外を報告します。
    6. [16] 文書群が空でなければ、
      1. [17] タスクをキューに追加するべきです
        処理
        1. [18] イベントループ締切について、 アイドルコールバック群呼び出しアルゴリズムを実行します。
        タスク源

[19] 次のタスクの追加がSHOULDであってMUSTでないのは、 他により優先度の高いタスクが現れた時などに利用者エージェントの判断でアイドル期間を切り上げて通常の処理を行うためとされています >>4

[20] 再帰的な実行の他には、アイドル期間の開始により実行されます。

[64] ハンドルについてのアイドルコールバックタイムアウト呼び出しアルゴリズム (invoke idle callback timeout algorithm) は、 次のようにします >>63

  1. [65] 項目を、アイドル要求コールバック群のリストからハンドルハンドルの項目を取得し、削除した結果に設定します。
  2. [66] 項目null なら、
    1. [67] 項目を、走らせられるアイドルコールバック群のリストからハンドルハンドルの項目を取得し、削除した結果に設定します。
  3. [68] 項目null 以外なら、
    1. [70] アイドル締切を、新しい IdleDeadline に設定します。
      締切
      現在時刻
      didTimeout
    2. [69] コールバック関数の実行をします。
      呼び出し可能
      項目コールバック
      引数リスト
      (アイドル締切)
      this
      例外投げられたら、例外を報告します。

[2] requestIdleCallback から呼び出されます。

[24] Fix didTimeout definition by rmcilroy · Pull Request #62 · w3c/requestidlecallback () <https://github.com/w3c/requestidlecallback/pull/62/files>