@Mdmitr

Можно ли получить данные от Api не дожидаясь полной загрузки?

Запрос к сети должен быть один.

Данные должны отображаться по мере загрузки.

fetch('https://jsonplaceholder.typicode.com/todos')
   .then(response => response.json())
   .then(json => console.log(json))

Один fetch запрос и получение данных частями, чтобы не ждать загрузки всего json.

Это вообще можно сделать?
  • Вопрос задан
  • 190 просмотров
Решения вопроса 3
yarkov
@yarkov
Проект "Жизнь после смерти" - lifeafterdeath.ru
Если я верно понял, то вам нужна пагинация. Отдавайте с бэкенда данные постранично и выводите соответственно на фронте, с возможностью перейти на нужную страницу.
Ответ написан
@Vitsliputsli
Можно, у XMLHttpRequest есть состояние readyState, при его смене генерируется событие readystatechange. Состояние Loading устанавливается несколько раз, а именно, каждый раз, когда получен очередной пакет, соответственно вы можете оперировать с буфером получаемых данных до его полной загрузки.
Ответ написан
@GrayHorse
В отличие от XMLHttpRequest Fetch API поддерживает полноценный стриминг.

Берешь из респонса ридер response.getReader() и считываешь данные вручную по частям по мере поступления. JSON файл, естетственно, парсить придется тоже вручную, т.к. JSON.parse не будет работать с невалидным JSON, чем недокаченный файл и будет являться.

Делается по аналогии с этим: https://learn.javascript.ru/fetch-progress

---

С XMLHttpRequest можно сделать недостриминг при использовании responseType: "text" (по-умолчанию). В таком случае при каждом вызове onprogress или onreadystatechange можно читать обновленный (с добавленными данными) xhr.responseText.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы