ExtendableEvent.waitUntil()
ExtendableEvent.waitUntil()
メソッドは、作業が進行中であることをイベントディスパッチャーに通知します。 また、その作業が成功したかどうかを検出するためにも使用できます。 サービスワーカーの場合、 waitUntil()
は、プロミスが決定するまで作業が進行中であることをブラウザーに通知し、サービスワーカーがその作業を完了させたい場合にサービスワーカーを終了させません。
サービスワーカーの install
イベントは、 waitUntil()
を使用して、タスクが完了するまでサービスワーカーをインストール中 (installing
) の段階に保持します。 waitUntil()
に渡されたプロミスが拒否された場合、インストールは失敗と見なされ、インストール中のサービスワーカーは破棄されます。 これは主に、依存するすべてのコアキャッシュが正常に読み込まれるまで、サービスワーカーがインストール済み (installed) と見なされないようにするために使用します。
サービスワーカーの activate
イベントは、waitUntil()
を使用して、waitUntil()
に渡されたプロミスが解決するまで、fetch
や push
などの機能イベントをバッファリングします。 これにより、サービスワーカーはデータベーススキーマを更新し、古いキャッシュを削除する時間を確保できるため、他のイベントは完全にアップグレードされた状態に依存できます。
waitUntil()
メソッドは、最初はイベントコールバック内で呼び出す必要がありますが、その後、すべてのプロミスが解決するまで、複数回呼び出すことができます。
メモ: 上記の段落で説明した動作は、 Firefox 43 で修正されました(Firefox バグ 1180274 を参照)。
構文
waitUntil(promise)
引数
Promise
です。
返値
なし (undefined
)。
例
サービスワーカーの install
イベント内で waitUntil()
を使用します。
addEventListener("install", (event) => {
const preCache = async () => {
const cache = await caches.open("static-v1");
return cache.addAll(["/", "/about/", "/static/styles.css"]);
};
event.waitUntil(preCache());
});
仕様書
Specification |
---|
Service Workers # dom-extendableevent-waituntil |
ブラウザーの互換性
BCD tables only load in the browser