вернуть запрос как ответ в fetchEvent - PullRequest
0 голосов
/ 09 мая 2018

Внутри сервис-работника я пытаюсь вернуть отправленный запрос как ответ, если запрос не удался. Это кажется очень простым, но это не работает.

На самом деле, когда я пытаюсь вернуть его, он возвращает пустой объект, даже с .clone().

Вот код:

fetch(event.request.clone())
      .catch((err) => {
        queue.addRequest(event.request)
        return new Response(JSON.stringify({ deferred: true, ...event.request }), {
          headers: new Headers({ "Content-Type": "application/json" })
        })
      })

Ответ всегда: { deferred: true }. И ничего больше.

Возможно ли это сделать?

1 Ответ

0 голосов
/ 09 мая 2018

Я только что нашел способ получить тело запроса и вернуть его в моем случае.

Можно получить его, используя .json(), который возвращает обещание с телом запроса.

Это выглядит так:

fetch(event.request.clone())
      .catch((err) => {
        queue.addRequest(event.request)
        return event.request.clone().json().then((requestBody) => {
          return new Response(JSON.stringify({ deferred: true, ...requestBody }), {
            headers: new Headers({ "Content-Type": "application/json" })
          })
        })
      })
...