ExtendableEvent.waitUntil()

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

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

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

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

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

構文

extendableEvent.waitUntil(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());
});

仕様

仕様 状態 コメント
Service Workers
waitUntil() の定義
草案 初期定義

ブラウザーの互換性

BCD tables only load in the browser

関連情報