ServiceWorkerGlobalScope: skipWaiting() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

メモ: この機能はサービスワーカー内でのみ利用可能です。

skipWaiting()ServiceWorkerGlobalScope インターフェイスのメソッドで、待機しているサービスワーカーがアクティブになるように強制します。

このメソッドは、 Clients.claim() と併用することで、現在のクライアントと他のすべてのアクティブなクライアントの両方で、元となるサービスワーカーの更新が即座に有効になるようにします。

構文

js
skipWaiting()

引数

なし。

返値

Promise で、新しくインストールされたサービスワーカーを起動しようとした後、undefined で解決します。

self.skipWaiting() はサービスワーカーの実行中、いつでも呼び出すことができますが、新しくインストールされたサービスワーカーが waiting 状態のままである場合にのみ効果があります。したがって、 self.skipWaiting()InstallEvent ハンドラーの内部から呼び出すことが一般的です。

以下の例では、アクティブなサービスワーカーが既にあるかどうかに関係なく、新しくインストールされたサービスワーカーを activating 状態に進行させるようにします。

js
self.addEventListener("install", (event) => {
  // skipWaiting() が返すプロミスは無視しても安全です。
  self.skipWaiting();

  // event.waitUntil() の内部で、サービスワーカーを
  // インストールするために必要な他のアクションを
  // 実行することも可能です。
});

仕様書

Specification
Service Workers
# service-worker-global-scope-skipwaiting

ブラウザーの互換性

BCD tables only load in the browser

関連情報