gpt4 book ai didi

javascript - 后台同步未在 serviceworker 中触发事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:51 25 4
gpt4 key购买 nike

我的同步事件没有触发,我正在使用 chrome webserverlocalhost:5000 上的台式电脑上提供页面,并使用获取 api 将数据发布到本地单独端口 localhost:1337 上的开发服务器。已关闭我的 wifi、chrome 网络服务器以及 chrome devtool 中的离线切换,但仍未触发我的事件。

这是我在 serviceworker.js 片段中用于同步的代码

self.addEventListener('sync', function(event) {   
if (event.tag == 'syncrhronizeOfflineData')
{
event.waitUntil(syncrhronizeData());
}
});
async function syncrhronizeData() {
console.log('now synchronizing data...');
//first get all favourites in the localDB and post them to server
const favData = await window.localforage.getItem('restaurants')
.filter((r) => r.isoffline );
console.log('favdata', favData);
}

尚未实际发布到数据库,尝试控制台 favdata 但未收到消息,事件未被触发。

我在 main.js 中注册 serviceworker 的片段

/**  * Service worker functions below  */ 
registerServiceWorker = () => {
if (!navigator.serviceWorker) return;
navigator.serviceWorker.register('/service-worker.js')
.then((reg) => {
if (!navigator.serviceWorker.controller) return;
if (reg.waiting) {
updateWorker(reg.waiting);
return;
}
if (reg.installing) {
trackInstalling(reg.installing);
return;
}
reg.addEventListener('updatefound', () => {
trackInstalling(reg.installing);
});
}).catch(function(err) {
console.error(err); // the Service Worker didn't install correctly
});
//background sync for favourites and reviews offline posting
if ('SyncManager' in window || 'sync' in reg) {
navigator.serviceWorker.ready.then(function(swRegistration) {
console.log('[ServiceWorker] is ready - sync is registered');
return swRegistration.sync.register('syncrhronizeOfflineData');
});
}
};

我收到一条控制台消息“[ServiceWorker] 已准备好 - 同步已注册”,但在我离线发布数据并重新连接后没有收到来自同步事件的消息。

最佳答案

窗口对象在 ServiceWorker 中不可用

关于javascript - 后台同步未在 serviceworker 中触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53825680/

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