Задать вопрос
@Roweb
Верстальщик

Почему в объекте Response нет самого ответа?

Почему fetch возвращает объект Response, в котором нет самого ответа? Зачем нужен еще один промис ( data.text(), data.json() )?
fetch(url).then(function(response){
 // response не содержит ответ
})
  • Вопрос задан
  • 371 просмотр
Подписаться 1 Простой 2 комментария
Решения вопроса 1
zkrvndm
@zkrvndm
Архитектор решений
Потому что может возникнуть необходимость читать поступающие данные сразу по мере их поступления:
https://learn.javascript.ru/fetch-progress
https://developer.mozilla.org/en-US/docs/Web/API/R...
Не ожидая завершения запроса.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Промис возвращаемый fetch() не ждет завершения всего запроса, он резолвится когда получены все заголовки.
На этом месте их можно обработать и решить что делать дальше, например читать json, текст или бинарные данные из тела, или вообще не обрабатывать тело и прервать запрос.
Так же можно читать тело ответа в виде потока, как уже указал в своем ответе Надим Закиров

Второй промис из response.text() и response.json() нужен чтоб дождаться считывания всего тела ответа, притом response.json() еще и позволяет браузеру парсить json из ответа потоково прямо во время скачивания, опять же не блокируя поток js/ui.
Ответ написан
Ваш ответ на вопрос

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

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