编程语言
首页 > 编程语言> > javascript – 如何在服务工作者中持久保存数据

javascript – 如何在服务工作者中持久保存数据

作者:互联网

截至目前,Chrome不支持传递其他数据来推送从GCM收到的通知.因此,每当收到推送通知时,我都必须从我的服务工作者执行提取.到现在为止还挺好.

但是:我需要在fetch中执行的http请求中包含一个请求参数.如何告诉服务工作者我的参数?

到目前为止我尝试过的

使用postMessage告诉我的服务工作者请求参数:

var serviceWorkerData = {};

self.addEventListener('message', function (evt) 
{
    console.log('service worker received', evt.data);

    serviceWorkerData = evt.data.myData;
});

self.addEventListener('push', function(event)
{
    event.waitUntil
    (
        fetch("http://my.url", {
            method: 'post',
            body: 'myData=' + serviceWorkerData
        }).then(function(response)
        {
            //...
        })
    );
});

为什么这不起作用

但这不是持久性的,即在我关闭浏览器并再次打开它之后,我的serviceWorkerData就丢失了. localStorage在服务工作者中不可用,所以如何在这里获得持久性?

解决方法:

您可以使用IndexedDB.

https://github.com/mozilla/localForage如果您想为IndexedDB建立一个更简单的接口.

您可以使用importScripts导入服务工作者中的localForage lib,请参阅例如:https://github.com/marco-c/mercurius/blob/master/static/sw-push.js.

标签:indexeddb,javascript,web-worker,service-worker,local-storage
来源: https://codeday.me/bug/20190727/1556078.html