Задать вопрос
@Mdmitr

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

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

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

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

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

Это вообще можно сделать?
  • Вопрос задан
  • 488 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 3
yarkov
@yarkov
Помог ответ? Отметь решением.
Если я верно понял, то вам нужна пагинация. Отдавайте с бэкенда данные постранично и выводите соответственно на фронте, с возможностью перейти на нужную страницу.
Ответ написан
@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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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