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 。

    关于您的特定问题:

  • installactivate事件的情况下,它延迟了服务工作人员对installedactivated的状态切换(请参阅specification of the waitUntil method,尤其是本段的最后一部分)。
  • 我想我的答案的其余部分已经回答了为什么需要它的原因。
  • 关于javascript-events - event.waitUntil在服务 worker 中做什么,为什么需要它?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37902441/

    10-11 13:47