このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

ExtendableEvent.waitUntil()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2018年4月⁩.

ExtendableEvent.waitUntil() メソッドは、作業が進行中であることをイベントディスパッチャーに通知します。 また、その作業が成功したかどうかを検出するためにも使用できます。 サービスワーカーの場合、 waitUntil() は、プロミスが決定するまで作業が進行中であることをブラウザーに通知し、サービスワーカーがその作業を完了させたい場合にサービスワーカーを終了させません。

サービスワーカーinstall イベントは、 waitUntil() を使用して、タスクが完了するまでサービスワーカーをインストール中 (installing) の段階に保持します。 waitUntil() に渡されたプロミスが拒否された場合、インストールは失敗と見なされ、インストール中のサービスワーカーは破棄されます。 これは主に、依存するすべてのコアキャッシュが正常に読み込まれるまで、サービスワーカーがインストール済み (installed) と見なされないようにするために使用します。

サービスワーカーactivate イベントは、waitUntil() を使用して、waitUntil() に渡されたプロミスが解決するまで、fetchpush などの機能イベントをバッファリングします。 これにより、サービスワーカーはデータベーススキーマを更新し、古いキャッシュを削除する時間を確保できるため、他のイベントは完全にアップグレードされた状態に依存できます。

waitUntil() メソッドは、最初はイベントコールバック内で呼び出す必要がありますが、その後、すべてのプロミスが解決するまで、複数回呼び出すことができます。

メモ: 上記の段落で説明した動作は、 Firefox 43 で修正されました(Firefox バグ 1180274 を参照)。

構文

js
waitUntil(promise)

引数

Promise です。

返値

なし (undefined)。

サービスワーカーの install イベント内で waitUntil() を使用します。

js
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

ブラウザーの互換性

関連情報