MDN建议您执行以下操作来创建和填充服务工作缓存:
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中调用时, 它会延迟处理已安装的安装工人,直到通过 承诺成功解决。这主要用于确保a 直到所有核心都不会考虑安装服务工作者 它取决于填充的缓存。
我不明白的是:
waitUntil
通常如何影响代码流?是否会阻止事件传播直到它的承诺结算?我问这个问题,因为我上面的代码有问题,我想理解它。
答案 0 :(得分:32)
正如描述所说,the ExtendableEvent.waitUntil() method extends the lifetime of the event
。如果您不在方法中调用它,则可以随时停止服务工作者(请参阅the specification)。
因此,waitUntil
方法用于告知浏览器在传递给waitUntil
的承诺被解决或拒绝之前不要终止服务工作者。
关于您的具体问题:
install
和activate
事件,它会将服务工作者的状态切换延迟到installed
和activated
(请参阅specification of the waitUntil method },特别是段落的最后一部分。)