【问题标题】:How can I tell Workbox to check for a new version (long after page is loaded)如何告诉 Workbox 检查新版本(页面加载后很久)
【发布时间】:2019-08-27 18:23:53
【问题描述】:

我有一个复杂的应用程序,它可以在离线时正常运行,并在它重新在线时进行同步。唯一不“同步”的是应用程序本身。

我知道如何在“安装”新版本时收到消息,但我不知道如何告诉 Workbox 检查更新。我想要相当于:

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw-test/sw.js', {scope: 'sw-test'}).then(function(registration) {
    // registration worked
    console.log('Registration succeeded.');
    button.onclick = function() {
      registration.update(); // <=== THIS WITH Workbox
    }
  }).catch(function(error) {
    // registration failed
    console.log('Registration failed with ' + error);
  });
};

[编辑] 在 github 上找到这个 https://github.com/GoogleChrome/workbox/blob/master/packages/workbox-window/src/Workbox.ts#L193

但截至 2019 年 8 月,TypeScript 类型不同步。

// Very recent change in Workbox
await wb.update()

// Or
const reg = wb.register()
// ...
reg.update()

【问题讨论】:

  • 我的回答对你有帮助吗?
  • ????我在某处找到了不同的答案,但您的答案是正确的。
  • 哦,这很有趣。请分享答案。我很想知道。

标签: javascript progressive-web-apps workbox


【解决方案1】:

Workbox 没有在页面加载后检查更新的功能。 您可以如何手动触发更新检查,如下所示。

navigator.serviceWorker.register('/sw.js').then(reg => {
  setInterval(function () {
    reg.update();
  },<intervalInMilliseconds>);
});

使用 Workbox

您可以使用最近推出的更新方法。但是您仍然需要使用 setInterval 并调用更新函数。

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多