@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?
  • Вопрос задан
  • 672 просмотра
Пригласить эксперта
Ответы на вопрос 3
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Использовать 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект