Страницы

Поиск по вопросам

четверг, 14 февраля 2019 г.

Почему fetch response.text() возвращает Promise

Прочитал в руководстве MDN о том, как получить из ответа сервера текст, но не очень понял, почему это объект Promise, ведь ответ уже получен, почему нельзя сразу прочитать его?
Например, почему вместо
response.text().then(function(text) { // ... });
нельзя было бы сделать:
var text = response.text();


Ответ

Не знаю, как у них внутри это работает, могу предположить 2 варианта:
Это сделано для унификации интерфейсов, чтоб везде были промисы. Возможно при вызове fetch только хедеры читаются, а не сам body, только потом при вызове text() начинается чтение самого тела запроса. Плюс в момент вызова text(), вероятно, только начинается чтение. То есть, если бы это было синхронно, как вы предлагаете response.text(), то это заблочило бы основной поток, а так response.text().then(...) сработает только когда файл будет прочитан целиком.
Поправьте, если не прав.

Комментариев нет:

Отправить комментарий