gpt4 book ai didi

javascript - serviceworker 第一次没有加载

转载 作者:行者123 更新时间:2023-11-29 16:50:01 26 4
gpt4 key购买 nike

if ('serviceWorker' in navigator) {
console.log('Service Worker is supported');
navigator.serviceWorker.register('sw.js').then(function(reg) {
console.log(reg);
reg.pushManager.subscribe({
userVisibleOnly: true
}).then(function(sub) {
var endpoint = sub.endpoint;
console.log('endpoint:', sub.endpoint);
});
}).catch(function(err) {
console.log(':(', err);
});
}

这是我注册 serviceWorker 的简单示例。当我第一次加载页面时,出现错误:

Uncaught (in promise) DOMException: Subscription failed - no active Service Worker

如果我重新加载此页面,一切正常。在 Mozilla 中我没有这个错误。为什么serviceWorker在第一次onload时注册不上?

最佳答案

为了接收推送事件,您需要一个成功安装的 service worker。您在成功安装服务 worker 之前要求订阅,因此它失败了。否则,看起来您的推送订阅有效,但如果唯一的工作人员安装失败,注册(以及您的订阅)将被丢弃。

navigator.serviceWorker.ready 是一个 promise ,一旦有一个事件的(成功安装的)工作人员注册就解决了。它通过注册解决,因此在这里运行良好。

navigator.serviceWorker.ready.then(reg => reg.pushManager.subscribe(…))

关于javascript - serviceworker 第一次没有加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com