serviceWorker.ready никогда не разрешается, если только внутри setTimeout

В событии domready на странице я устанавливаю прослушиватель событий для кнопки, которая устанавливает событие фоновой синхронизации на странице на моем веб-сайте (в автономном режиме), но даже если работник службы уже загружен во время предыдущих посещений страницы, эта строка код никогда не разрешает обещание, его статус остается неопределенным на неопределенный срок.

navigator.serviceWorker.ready.then(function (sw) {
    $('#elt').on('click', function () {
         sw.sync.register('contact-form-submission');

Поскольку я знаю, что событие синхронизации не нужно устанавливать до тех пор, пока форма не будет завершена, я попытался обернуть этот код в setTimeout(), равный 3 секундам, и это сработало! У меня вопрос, почему это может быть, я не смог найти никого другого, который бы указывал, что событие.ready не будет доступно при первой загрузке страницы. Проницательность ценится.

0 ответов

Другие вопросы по тегам