ジョブ約束を解決

ジョブ (サービスワーカー)

仕様書

ジョブ

[2] ジョブ (job) は、 サービスワーカー登録への要求を表します >>1

[29] ジョブは実行オプションの集合体のようなもので、 実行はタスクとしてイベントループ内で行われます。

状態

[3] ジョブは、次の状態を持ちます。

ジョブ型 (job type)
登録, 更新, 登録解除のいずれか >>1
スクリプトURL
ワーカー型
キャッシュ利用
クライアント
参照元
ジョブ約束
約束または null。初期値は null
等価ジョブ群のリスト (list of equivalent jobs)
ジョブリスト。初期値は空リスト>>1
force bypass cache flag

等価性

[4] ジョブ等価 (equivalent) であるとは、 次の条件をすべて満たすことをいいます >>1

作成

[12] ジョブ作成 (Create Job) は、 ジョブ型適用範囲URLスクリプトURL約束クライアントを次のようにします >>1

  1. [13] ジョブを、新しいジョブに設定します。
    ジョブ型
    ジョブ型
    適用範囲URL
    適用範囲URL
    スクリプトURL
    スクリプトURL
    ジョブ約束
    約束
    クライアント
    クライアント
  2. [15] クライアントnull でない場合、
    1. [16] ジョブ参照元を、クライアント作成URLに設定します。
  3. [14] ジョブを返します。

[17] 次の場面で呼び出されます。

ジョブ約束

[41] ジョブは、 ジョブ約束 (job promise) を持ちます。 値は約束または nullで、初期値は null です。 >>1

[42] ジョブ約束の解決 (Resolve Job Promise) ジョブ約束の拒絶 (Reject Job Promise) は、 ジョブについて、次のようにします >>1

  1. [44] ジョブの処理を実行します。
  2. [45] ジョブ等価ジョブ群のリストの各ジョブについて、
    1. [46] ジョブの処理を実行します。

[47] ジョブの処理は、次のようにします >>1

  1. [43] ジョブクライアントnull 以外の場合、
    1. [48] タスクをキューに追加します。
      処理
      1. [49] ジョブジョブ約束を、解決 (ジョブ約束の解決の場合。) または拒絶 (ジョブ約束の拒絶の場合。) します。
      イベントループ
      ジョブクライアント有責イベントループ
      タスク源
      DOM操作タスク源

[50] 次の場面で呼び出されます。

ジョブキュー

[9] ジョブキュー (job queue) は、 ジョブを順に実行するためのスレッド安全キューです。 >>1

[10] FIFO キューの一般的な特性を満たすべきです>>1

[11] 利用者エージェントは、 適用範囲URLからジョブキューへの写像を持ちます。 >>1

スケジューリング

[18] Schedule Job は、 ジョブキュージョブについて、次のようにします >>1

  1. [19] ジョブキューの場合、
    1. [20] ジョブジョブキューpush します。
    2. [21] ジョブキューについてジョブを走らせる処理を実行します。
  2. [22] それ以外の場合、
    1. [23] 最後のジョブを、ジョブキューの末尾の項目に設定します。
    2. [24] ジョブ最後のジョブ等価で、 最後のジョブジョブ約束settle 済みでない場合、
      1. [25] ジョブ最後のジョブ等価ジョブ群のリストappend します。
    3. [26] それ以外の場合、
      1. [27] ジョブジョブキューpush します。

[28] 次の場面で呼び出されます。

実行

[30] ジョブを走らせる (Run Job) には、 ジョブキューについて、次のようにします >>1

  1. [31] タスクをキューに追加します。
    処理
    1. [32] ジョブを、ジョブキューの先頭の項目に設定します。
    2. [33] 並列にジョブの処理を実行します。
    タスク源
    ?
[34] 注記として登録更新タスクをキューに追加するのは DOMContentLoaded まで遅延する >>1 とありますが、 そのような規定は見当たりません。

[51] ジョブの実行とは、ジョブ型により、 ジョブジョブキューについて登録更新登録解除の適切なものを実行することをいいます >>1

[39] ジョブを走らせる処理は、Schedule Jobジョブ終了から呼び出されます。


[35] ジョブ終了 (Finish Job) は、 ジョブジョブキューについて、 次のようにします >>1

  1. [36] ジョブキューから先頭の項目を pop します。
  2. [37] ジョブキューでない場合、
    1. [38] ジョブキュージョブを走らせる処理を実行します。

[40] 次の場面で呼び出されます。