javascript - `importScript` 无法在 serviceWorker 推送事件之前解决依赖关系

标签 javascript push-notification es6-promise service-worker web-push

serviceWorker 推送 promise 解决之前,无法使用 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
    });
});

服务工作人员推送事件

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);
            }
        }));
});

注意:

最佳答案

您应该像这样在后台运行 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 处于事件状态,直到脚本完全加载为止。

关于javascript - `importScript` 无法在 serviceWorker 推送事件之前解决依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40887162/

相关文章:

Android服务在推送通知发送时启动并在服务任务完成后停止

javascript - Promise/A+ with chain then() 回调用例?

javascript - jQuery deferreds - 多个 block 中的执行顺序

javascript - 是否可以从 Javascript ping 服务器?

javascript - React HOC 渲染没有父节点的兄弟节点

javascript - 如何使用 jquery javascript 对数组项元素进行分组,这些元素使用与项不同的对象,值

android - OneSignal-Pushnotification 小图标在 Android 上不显示

javascript - 带空格字母的正则表达式

启用推送通知时,Android 应用程序突然崩溃

javascript - nodejs mocha - 无法使用 stub 测试 promise