@Puss1Juic3

Почему возвращается Promise pending?

async function loadJSON(url) {
  const response = await fetch(url);
  if (response.ok) {
    const json = await response.json();
    console.log(json); //Выводит JSON
    return json;
  } else {
    throw new Error(response.statusText)
  }
}

try {
  console.log(loadJSON('https://api.github.com/users/puss1juic3')); //Выводит Promise{<pending>}
} catch (error) {
  console.log(error);
}


Можно ли как-то избежать .then или await при использовании функции loadJSON?
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 3
yarkov
@yarkov Куратор тега JavaScript
Проект "Жизнь после смерти" - lifeafterdeath.ru
Использовать await. Функция async вернёт промис.
Ответ написан
@abberati
frontend-разработчик
Нельзя. Асинхронные функции всегда возвращают Promise.
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
Почему возвращается Promise pending?

потому что вы вызываете асинхронные функции которые возвращают промис, и в свою очередь возвращаете промис.

Можно ли как-то избежать .then или await при использовании функции loadJSON?

можно конечно, не используйте их и все.
только данные из вызова loadJSON вы при этом не получите, потому что данные загружаются после того как ваш console.log(loadJSON()) сработает, их просто нет еще.

Хотите получить эти данные - пишите асинхронный код вокруг console.log тоже.
console.log(await loadJSON()) например.
чтобы работало надо чтобы это было внутри функции с async или включена поддержка top-level await.
Ответ написан
Ваш ответ на вопрос

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

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