Я новичок в сфере обслуживания.Я учусь на Mobile Web Specialist , которую проводит Udacity, и для этого использую Google-Chrome.Я хочу получить ответ из сети, и если он возвращает 404 в качестве статуса, я получаю и другой ответ из сети.Это код для извлечения из сети только один раз.Этот код прекрасно работает:
self.addEventListener('fetch', function(event) {
event.respondWith(
fetch(event.request).then(function(response) {
if (response.status === 404) {
return new Response("Whoops, not found");
}
return response;
}).catch(function() {
return new Response("Uh oh, that totally failed!");
})
);
});
Я сделал некоторые обновления для этого кода, выдав ошибку после получения response.status === 404
и управляя ею так же, как try/catch
.Обновленный код приведен ниже:
self.addEventListener('fetch', function(event) {
try {
event.respondWith(
fetch(event.request).then(function(response) {
if (response.status === 404) {
throw (Error);
}
return response;
}).catch(function() {
return new Response("Uh oh, that totally failed!");
})
);
} catch (Error) {
event.respondWith(
fetch('/imgs/dr-evil.gif').then(function(response) {
if (response.status === 404) {
return new Response('couldn\'t fetch twice');
}
return response;
}).catch(function() {
return new Response("Uh oh, that totally failed twice!");
})
);
}
});
Я знаю, что есть лучший способ сделать вложенную выборку с помощью сервисного работника, но я хочу знать, что я здесь сделал неправильно.