防止在函数调用之前执行代码行

时间:2018-09-13 21:49:14

标签: javascript push-notification promise

我正在使用Push Notification API,并且遇到了JavaScript执行问题。

我具有以下功能:

 function subscribeUserToPush() {
    return navigator.serviceWorker.register('/firebase-messaging.js')
        .then(function (registration) {
            const subscribeOptions = {
                userVisibleOnly: true,
                applicationServerKey: urlBase64ToUint8Array('BEjboIY283xz3XTcjiFGVBGWazp20_LArGgplbQw0h91bafKBIT2zl7BSKZBgOV9tg1Tb_X0BXxrB1BjxX6WZvQ')
            };
            return registration.pushManager.subscribe(subscribeOptions);
        })
        .then(function (pushSubscription) {
            console.log('Received PushSubscription: ', JSON.stringify(pushSubscription));
            const subscriptionObject = JSON.stringify(pushSubscription);
            subscription = subscriptionObject;
            console.log('EndPoint url: ', pushSubscription.endpoint);
            return pushSubscription;

        });

}

subscribeUserToPush();

调用此函数后,应在以下变量中包含值:

console.log('Global scope subscription', window.subscription);
var endpoint = window.subscription.endpoint;
    var key = window.subscription.getKey('p256dh');
    var auth = window.subscription.getKey('auth');
  

但是,在我的控制台中:我首先看到全局范围订阅   未定义和错误未捕获的TypeError:无法读取属性   未定义的“端点”

尽管在调试器中,window.subscription获得更新的值。 谁能帮我解决这个问题。我是使用Promise和Web Push Notification API的新手。我想对我的ajax调用使用avove变量,以将订阅信息发送到服务器。

0 个答案:

没有答案