--- title: ExtendableEvent.waitUntil() slug: Web/API/ExtendableEvent/waitUntil tags: - API - ExtendableEvent - Method - Reference - waitUntil translation_of: Web/API/ExtendableEvent/waitUntil ---
{{APIRef("Service Workers API")}}
ExtendableEvent.waitUntil()
メソッドは、作業が進行中であることをイベントディスパッチャーに通知します。 また、その作業が成功したかどうかを検出するためにも使用できます。 サービスワーカーの場合、waitUntil()
は、Promise が確定するまで作業が進行中であることをブラウザーに通知し、サービスワーカーがその作業を完了させたい場合にサービスワーカーを終了させません。
{{domxref("ServiceWorkerGlobalScope", "サービスワーカー")}}の install
イベントは、waitUntil()
を使用して、タスクが完了するまでサービスワーカーをインストール中({{domxref("ServiceWorkerRegistration.installing", "installing")}})の段階に保持します。 waitUntil()
に渡された Promise が拒否された場合、インストールは失敗と見なされ、インストール中のサービスワーカーは破棄されます。 これは主に、依存するすべてのコアキャッシュが正常に読み込まれるまで、サービスワーカーがインストール済み(installed)と見なされないようにするために使用します。
{{domxref("ServiceWorkerGlobalScope", "サービスワーカー")}}の activate
イベントは、waitUntil()
を使用して、waitUntil()
に渡された Promise が解決するまで、fetch
や push
などの機能イベントをバッファーします。 これにより、サービスワーカーはデータベーススキーマを更新し、古い{{domxref("Cache", "キャッシュ")}}を削除する時間を確保できるため、他のイベントは完全にアップグレードされた状態に依存できます。
waitUntil()
メソッドは、最初はイベントコールバック内で呼び出す必要がありますが、その後、すべての Promise が解決するまで、複数回呼び出すことができます。
注: 上記の段落で説明した動作は、Firefox 43 で修正されました({{bug(1180274)}} を参照)。
extendableEvent.waitUntil(promise);
{{jsxref("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()); });
仕様 | 状態 | コメント |
---|---|---|
{{SpecName('Service Workers', '#dom-extendableevent-waituntil', 'waitUntil()')}} | {{Spec2('Service Workers')}} | 初期定義 |
{{Compat("api.ExtendableEvent.waitUntil")}}