chelitsy
@chelitsy
все при мне

Как получить данные из Promise?

Тестовый код:

async function one() {fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits')
.then(res => res.json()) 
.then(data => {
  test = data;
  });
}
console.log(one())

Получаю ответ: Promise { undefined }.
Вычитал, что нужно использовать async await, но что-то не вышло ничего.
  • Вопрос задан
  • 153 просмотра
Решения вопроса 2
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Значит плохо читали. Прочитайте еще раз и выполните упражнения: https://learn.javascript.ru/promise
async function one() {fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits')
.then(res => res.json()) 
.then(data => { console.log(data) });
}
console.log(one())
Ответ написан
Комментировать
cyber-jet
@cyber-jet
Ваша функция ни чего не возвращает, а следуя логике вашего вопроса, должна вернуть результат после выполнения промиса:
function one() {
  return fetch(
    "https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits"
  )
    .then((res) => res.json())
    .then((data) => data);
}

и чтобы дождаться выполнения обещания, а потом показать результат:
one().then(console.log);

PS: ключевое async тут лишнее, так как функция и так возвращает объект Promise.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
keslo
@keslo
Ваш console.log не дожидается пока Promise зарезолвится.
async function one() {
    const result = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits');
    return result.json();
}
console.log(await one())
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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