Я слушаю событие 'sync'
в моем файле рабочего сервиса, но НИЧЕГО не происходит. Даже мой console.log
не стреляет
Я гарантирую, что вернул обещание в функции waitUntil()
.
так выглядит мой файл main.js
finalOrder.addEventListener('submit', function(event) {
event.preventDefault();
var body = domArrayToObject(event.target)
showForm();
if ('serviceWorker' in navigator && 'SyncManager' in window) {
(navigator.serviceWorker.ready
.then(worker => {
return worker.sync.register('write-req')
.then(function(s){
localStorage.setItem('req', JSON.stringify(body));
}).catch(err => console.log(err))
}).catch(err => console.log(err)))
} else {
sendMails(body);
}
})
это моя функция sendMails (urlstring является конечной точкой функции firebase)
function sendMails(body) {
return (Promise.all([fetch('urlstring', {
method: 'POST',
body: JSON.stringify(body),
headers:{
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(response => console.log(res))
.catch(err => console.log(err)),
fetch('urlstring', {
method: 'POST',
body: JSON.stringify(body),
headers:{
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(response => console.log(res))
.catch(err => console.log(err))]).catch(err => console.log(err)))
}
это мой рабочий файл сервиса
self.addEventListener('sync', ev => {
console.log('[Yaay Internet Connection]', ev)
if (ev.tag == 'write-req') {
console.log('[Service Worker] Syncing new Posts');
var body = localStorage.getItem('req');
ev.waitUntil(sendMails(body)
.then((res) => {
self.registration.showNotification('Order has been placed!!!',
{
body: 'Your Order has been placed. You will hear from us soon',
image: '',
icon: '',
badge: '',
actions: [
{ action: 'add', title: 'add', icon: ''}
]
})
}));
}
})
Я хочу прослушать событие 'sync' и запустить обратный вызов. Отправка запроса в конечную точку, если соединение уже установлено или установлено повторно.