Страницы

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

воскресенье, 22 декабря 2019 г.

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

#javascript


Прочитал в руководстве MDN о том, как получить из ответа сервера текст, но не очень
понял, почему это объект Promise, ведь ответ уже получен, почему нельзя сразу прочитать его?

Например, почему вместо

response.text().then(function(text) {
    // ...
});


нельзя было бы сделать:

var text = response.text();

    


Ответы

Ответ 1



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

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

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