gpt4 book ai didi

javascript - ServiceWorker 的冗余状态应该怎么办?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:31:41 28 4
gpt4 key购买 nike

我需要一个 serviceworker 的配套脚本,我现在正在试用。

脚本是这样工作的:

((n, d) => {

if (!(n.serviceWorker && (typeof Cache !== 'undefined' && Cache.prototype.addAll))) return;

n.serviceWorker.register('/serviceworker.js', { scope: './book/' })
.then(function(reg) {

if (!n.serviceWorker.controller) return;

reg.onupdatefound = () => {

let installingWorker = reg.installing;

installingWorker.onstatechange = () => {
switch (installingWorker.state) {
case 'installed':
if (navigator.serviceWorker.controller) {
updateReady(reg.waiting);

} else {
// This is the initial serviceworker…
console.log('May be skipwaiting here?');
}
break;

case 'waiting':
updateReady(reg.waiting);
break;

case 'redundant':
// Something went wrong?
console.log('[Companion] new SW could not install…')
break;
}
};
};
}).catch((err) => {
//console.log('[Companion] Something went wrong…', err);
});

function updateReady(worker) {
d.getElementById('swNotifier').classList.remove('hidden');

λ('refreshServiceWorkerButton').on('click', function(event) {
event.preventDefault();
worker.postMessage({ 'refreshServiceWorker': true } );
});

λ('cancelRefresh').on('click', function(event) {
event.preventDefault();
d.getElementById('swNotifier').classList.add('hidden');
});

}

function λ(selector) {

let self = {};

self.selector = selector;

self.element = d.getElementById(self.selector);

self.on = function(type, callback) {
self.element['on' + type] = callback;
};

return self;
}

let refreshing;

n.serviceWorker.addEventListener('controllerchange', function() {
if (refreshing) return;
window.location.reload();
refreshing = true;
});


})(navigator, document);

我现在有点不知所措,因为 service worker api 的庞大性无法“看到”如果 reg.installing 返回一个 redundant 会做什么状态?

如果这看起来是个愚蠢的问题,我深表歉意,但我是 serviceworkers 的新手。

最佳答案

很难弄清楚您的意图,所以我会尝试笼统地回答这个问题。

如果 Service Worker 安装失败或被更新的 Service Worker 取代,该 Service Worker 将变得多余。

发生这种情况时您该怎么做取决于您。在这些情况下你想做什么?

关于javascript - ServiceWorker 的冗余状态应该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39608546/

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