MDN建议您执行以下操作来创建和填充服务 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
方法也已记录在案,似乎上面的代码是目前存在的唯一目的:我不明白的是:
waitUntil
通常如何影响代码流?它会阻止事件的传播直到 promise 解决吗? 我问这个问题是因为我上面的代码有问题,我想理解。
最佳答案
如描述中所述,the ExtendableEvent.waitUntil() method extends the lifetime of the event
。如果您未在方法内部调用它,则可以随时停止服务 worker (请参阅the specification)。
因此,waitUntil
方法用于告诉浏览器在解析或拒绝传递给waitUntil
的 promise 之前不要终止服务 worker 。
关于您的特定问题:
install
和activate
事件的情况下,它延迟了服务工作人员对installed
和activated
的状态切换(请参阅specification of the waitUntil method,尤其是本段的最后一部分)。 关于javascript-events - event.waitUntil在服务 worker 中做什么,为什么需要它?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37902441/