@223606322
начинающий web-разработчик

Почему чтобы применить методы к fetch его нужно перед этим вынести в переменную?

Пример с learn.javascript.
let url = 'https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits';
let response = await fetch(url);

let commits = await response.json(); // читаем ответ в формате JSON

alert(commits[0].author.login);


Почему нельзя метод .json(); нельзя применить там же где мы получаем запрос?
Зачем выводить это в другую переменную? Разве это не должно быть одним и тем же?

let url = 'https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits';
let commits = await fetch(url).json();

alert(commits[0].author.login);
  • Вопрос задан
  • 113 просмотров
Решения вопроса 3
Seasle
@Seasle Куратор тега JavaScript
await (await fetch(url)).json();
А записывать в другую переменную чтобы можно получить данные самого ответа - ok, status, statusText, headers и т. д.
Ответ написан
profesor08
@profesor08 Куратор тега JavaScript
Потому что fetch возвращает промис, а у промиса нет метода json().
Запись let commits = await fetch(url).json(); равна let commits = await (fetch(url).json());. Поэтому сначала надо получить результат промиса, а потом уже работать с результатом, а записывать в переменную, или писать все в одну строчку - не имеет значения.
Ответ написан
Комментировать
@Sun_Day
Потому что тебе нужно ассинхронно получить ответ, а уже к ответу(результату промиса) применить json(). Зафетчить-то ты зафетчил, а получить результат от промиса тебе тоже нужно.

Например вот так

let response = await fetch(url).then(res => res.json());


Или как выше.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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