Мне нужен идентификатор регистрации chrome для отправки его в качестве параметра вызова API, поэтому я могу получить сообщение, соответствующее идентификатору регистрации. Мой код выглядит следующим образом:Не удалось выполнить 'waitUntil' в 'ExtendableEvent'
self.addEventListener('push', function(event) {
var apiPath = 'http://localhost/api/v1/notification/getNotification?regId=';
event.waitUntil(registration.pushManager.getSubscription().then(function (subscription){
apiPath = apiPath + subscription.endpoint.split("/").slice(-1);
event.waitUntil(fetch(apiPath).then(function(response){
if(response.status !== 200){
console.log("Problem Occurred:"+response.status);
throw new Error();
}
return response.json().then(function(data){
var title = data.title;
var message = data.body;
var icon = data.icon;
var tag = data.tag;
var url = data.url;
return self.registration.showNotification(title,{
body: message,
icon: icon,
tag: tag,
data: url
});
})
}).catch(function(err){
var title = 'Notification';
var message = 'You have new notifications';
return self.registration.showNotification(title,{
body: message,
icon: '/images/Logo.png',
tag: 'Demo',
data: 'http://www.google.com/'
});
})
)
}));
return;
});
Ошибка я получаю с выше код:
Uncaught (обещанию) DOMException:
Не удалось выполнить 'waitUntil' на «ExtendableEvent»: обработчик событий уже завершен. (...) вместе с дополнительным уведомлением «Сайт обновлен в фоновом режиме». Теперь, даже если я удалю
event.waitUntil
перед номеромfetch(apiPath)
, я до сих пор получаю это дополнительное уведомление.
Пожалуйста, помогите мне найти решение этого вопроса.
P.S: Вопрос в Chrome Push Notification: This site has been updated in the background, кажется, не имеет смысла в моем случае.
Я просто вернул объект обещание и сделал работу заменен 'т.е. event.waitUntil' с' return' – doubt
Да, действительно. Я просто немного изменил отступы, чтобы было легче читать для меня, но это суть. – Marco