Как перезагрузить страницу в sw.js?

Приветствую.
Пытаюсь реализовать всплывающее окно с информацией о выходе новой версии приложения(кэша) и кнопкой "обновить". Связать react и service worker у меня получилось. При изменении версии кэша всплывает окно. По клику на кнопку я вызываю
navigator.serviceWorker.controller.postMessage({type: 'SKIP_WAITING',});


далее я слушаю в sw.js событие message
self.addEventListener('message', event => {
    if (event.data && event.data.type === 'SKIP_WAITING') {
        const cacheWhitelist = [CACHE_NAME];
        event.waitUntil(
            caches
                .keys()
                .then(keyList => {
                    return Promise.all(
                        keyList.map(function (key) {
                            if (cacheWhitelist.indexOf(key) === -1) {
                                return caches.delete(key);
                            }
                        })
                    );
                })
                .then(() => self.clients.claim())
        );

        self.skipWaiting();
    }
});

В этом куске кода я ещё думаю как лучше удалить старый кэш. Вопрос в том, как мне перезагрузить страницу пользователя ? Если я перезагружаю страницу в обработчике клика в сплывающем окне, то у меня не успевает отработать удаление кэша, а если я пытаюсь передавать в прослушиватель метод , то приложение ломается. Внутри sw.js я не могу обратиться к объекту window. Подскажите пожалуйста, как я могу перезагрузить страницу или как бы вы сделали это
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы