`importScript` 无法在 serviceWorker 推送事件之前解决依赖关系
`importScript` unable to resolve dependency before serviceWorker push event
无法在 serviceWorker
推送承诺解决之前使用 importScript
解决依赖关系;有人可以建议更好的方法来解决这个问题吗?
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
});
});
服务工作者push
事件
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
你应该运行 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 处于活动状态,直到脚本完全加载。
无法在 serviceWorker
推送承诺解决之前使用 importScript
解决依赖关系;有人可以建议更好的方法来解决这个问题吗?
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
});
});
服务工作者push
事件
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
你应该运行 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 处于活动状态,直到脚本完全加载。