Polymer 2.0服务工作者自定义事件

时间:2018-02-08 08:26:59

标签: polymer service-worker progressive-web-apps polymer-2.x

我是Polymer 2.0的新手,也是服务工作者的新手。但是,如果我通过Polymer构建,则会写一个service-worker.js。到目前为止,一切正常。

我想将自己的事件添加到服务工作者。就像用于与pouchdb同步的'sync'事件一样。

我将importScripts: ['sw.js']添加到sw-precache-config.js文件中。这会在importScripts("sw.js");文件中生成代码行service-worker.js

我的想法是将我的'同步'事件添加到sw.js但事件在重新上线后却没有。我做错了吗?我错过了什么?还有更好的方法吗?

修改

在按钮上单击以下函数:

function onMessageSend(message){
  navigator.serviceWorker.ready.then(function(registration) {
  registration.sync.register('outbox').then(function() {
  console.info('success');},function() {
  console.info('no success');});});
}

sw.js中的同步事件如下所示:

self.addEventListener('sync', function(event) {
   console.log("a sync catched");
   if (event.tag === "outbox") {
      console.log("is my sync");
      event.waitUntil(fetch("http://website.com/otherthings",{ mode: 'no-cors'})
      .then(function(response) {
      console.log("ok, sent");})
      .catch(console.error));
}});

调用onMessageSend()后,我看到waitUntil尝试获取网站,但如果离线则失败。这是通缉。

但是,当失败后,当离线状态变为在线状态时,同步事件是否也应该被触发?这根本不会发生。

EDIT2:我的电脑通过局域网连接。同步事件立即触发,与连接状态无关。 有些不对劲。

EDIT3:从waitUntil中删除catch并没有帮助。

0 个答案:

没有答案