Tom*_*ica 40 javascript-events promise service-worker
MDN建议您执行以下操作来创建和填充服务工作缓存:
this.addEventListener('install', function(event) {
event.waitUntil(
caches.open('v1').then(function(cache) {
return cache.addAll([
'/sw-test/',
'/sw-test/index.html',
... etc ...
]);
})
);
});
Run Code Online (Sandbox Code Playgroud)
我不明白那段代码.该waitUntil方法也被记录,似乎上面的代码是它目前存在的唯一目的:
ExtendableEvent.waitUntil()方法可延长事件的生命周期.当相关的安装事件的事件处理程序调用时,它会延迟治疗的安装工所安装,直到通过无极成功解析.这主要用于确保在填充所依赖的所有核心缓存之前不会考虑安装服务工作者.
我不明白的是:
waitUntil一般如何影响代码流?是否会阻止事件传播直到它的承诺结算?我问这个问题,因为我上面的代码有问题,我想了解它.
Mar*_*rco 39
正如描述所说,the ExtendableEvent.waitUntil() method extends the lifetime of the event.如果不在方法中调用它,则可以随时停止服务工作者(请参阅规范).
因此,该waitUntil方法用于告知浏览器不要终止服务工作者,直到传递给waitUntil它的promise 被解决或拒绝.
关于您的具体问题:
install和activate事件的情况下,它将服务工作者的状态切换延迟到(installed并activated参见waitUntil方法的规范,特别是段落的最后部分).