MDNでは、Service Workerキャッシュを作成してデータを取り込むために次のことを行うことをお勧めします。
this.addEventListener('install', function(event) {
event.waitUntil(
caches.open('v1').then(function(cache) {
return cache.addAll([
'/sw-test/',
'/sw-test/index.html',
... etc ...
]);
})
);
});
私はそのコードを理解していません。 waitUntil
メソッドも文書化されており、上記のコードは現時点での唯一の目的であるようです。
ExtendableEvent.waitUntil()メソッドは、イベントの有効期間を延長します。インストールイベントに関連付けられたEventHandlerで呼び出されると、渡されたPromiseが正常に解決されるまで、インストールワーカーのインストール済みとしての処理を遅らせます。これは主に、依存するすべてのコアキャッシュが読み込まれるまで、サービスワーカーがインストールされていると見なされないようにするために使用されます。
私が理解していないのは:
waitUntil
は一般にコードフローにどのように影響しますか?約束が解決するまで、イベントの伝播を停止しますか?上記のコードに問題があり、それを理解したいので、この質問をしています。
説明にあるように、the ExtendableEvent.waitUntil() method extends the lifetime of the event
。メソッド内で呼び出さない場合、Service Workerはいつでも停止できます( 仕様 を参照)。
したがって、waitUntil
メソッドは、waitUntil
に渡されたプロミスが解決または拒否されるまで、サービスワーカーを終了しないようにブラウザに指示するために使用されます。
特定の質問について:
install
およびactivate
イベントの場合、サービスワーカーのinstalled
およびactivated
への状態切り替えを遅延させます( waitUntilメソッドの仕様 、特に段落の最後の部分)。