Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Porque não ocorre loop ao utilizar fetch dentro de um fetch que é "escutado" / interceptado

Olá pessoal!

Referente ao seguinte código da transcrição desta tarefa/vídeo:

self.addEventListener("fetch", function(event){

    let pedido = event.request
    let promiseResposta = caches.open("ceep-imagens").then(cache => {
        return cache.match(pedido)
    }).then(respostaCache) => {
        let resposta = respostaCache ? respostaCache : fetch(pedido)
        return resposta
    })

    event.respondWith(promiseResposta)

})

Dúvida: porque não ocorre loop ao utilizar fetch(pedido) dentro de um fetch (self.addEventListener("fetch"...) que está sendo "escutado" / interceptado? Quando o fetch interno for executado, este não seria interceptado pelo listener do fetch externo, e assim sucessivamente/loop ?

Atenciosamente.

3 respostas
solução!

Fala aí Elías, tudo bem? Excelente pergunta, vamos lá:

Ele não fica em loop por causa do funcionamento dos service's worker's.

Quando fazemos um self.addEventListener de fetch, estamos dizendo para nosso servicer worker ficar de olho se algum arquivo que ele está controlando é requisitado na página.

Caso seja, ele irá acionar esse evento e podemos ter acesso á ele, dessa maneira, podemos responder com algum arquivo do nosso cache utilizando o respondeWith ou podemos falar para o browser requisitar o arquivo externo através de fetch(event.request).

Podemos dizer que ele dispara nosso listener antes de de fato realizar a chamada na rede para um arquivo externo novo.

Espero ter ajudado.

Olá Matheus!

Ajudou sim, obrigado pelo retorno.

Atenciosamente.

Mágina, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.