0

Невозможно разрешить зависимость с использованием importScript до serviceWorker разрешение push обещано; может ли кто-нибудь предложить лучший способ получить эту сортировку?`importScript` не может разрешить зависимость перед вызовом pushWorker

ServiceWorker fetch событие:

var iDB; // Global Variable 
self.addEventListener("fetch", function(e) { 
    self.importScripts("dexie.min.js"); 
    var o = new Dexie('database_name'); 
    o.version(1).stores({ 
     iDBStore: "++id,adspotkey" 
     iDB = o 
    }); 
}); 

Service Worker push Event

self.addEventListener("push", function(e) { 
    e.waitUntil(getDetails().then(function(ex) { 
     try { 
      e = wpSDK.iDB; 
      return e.iDBStore.where("id").above(0).toArray().then(function(ox) { 
       console.log(ox); 
      } 
     })); 
}); 

Примечание:

  • На push консоли бросает ошибку, как показано ниже TypeError: Cannot read property 'iDBStore' of undefined(…)
  • Использование Wrapper for IndexedDB - Dexie.js

ответ

1

Вы должны запустить importScripts на фоне, как это.

self.importScripts("dexie.min.js"); 
var iDB; // Global Variable 
self.addEventListener("fetch", function(e) { 
    var o = new Dexie('database_name'); 
    o.version(1).stores({ 
     iDBStore: "++id,adspotkey" 
     iDB = o 
    }); 
}); 

importScripts - синхронный метод. В результате при запуске этого метода в фоновом режиме он блокирует работу службы ServiceWorker до полной загрузки сценария.

+0

Спасибо Tresdin - я обязательно попробую ваше предложение! –

Смежные вопросы