Я новичок во всей этой концепции асинхронных функций. Вот функция, которую я хочу использовать:
async function fetchData() {
try {
const resultRes = await fetch("https://www.breakingbadapi.com/api/characters?category=Better+Call+Saul");
const result = await resultRes.json();
return result;
} catch (error) {
console.error(error);
}
}
А вот как выглядит вызов функции:
const Data = fetchData();
Теперь я хочу выполнить console.log(Data) с возвращаемым массивом, но вместо этого он отображается как объект обещания. Как мне использовать эту функцию, поскольку использование ее с .then портит все мое приложение, поскольку содержащий файл является компонентом реакции?
асинхронная функция по своему определению возвращает обещание... попробуйте
fetchData().then(Data => console.log(Data))
... илиconst Data = await fetchData()
, если можете - т.е. верхний уровень модуля или внутриasync function
попробуй так
const Data = await fetchData();
но содержащая функция не является асинхронной, и, делая ее асинхронной, эта функция возвращает обещание, которое, похоже, не работает в reactDOM.render()
Ну а дальше пора
useState
иuseEffect
... Однако перед этим рекомендую ознакомиться с асинхронностью в JS.асинхронность подобна вирусу — он заражает все, к чему прикасается, и от него нет лекарства. если вы думаете об асинхронности как о получении результата в некое неопределенное время в будущем, вы скоро поймете, что его нельзя «предсказать» — если только код не может путешествовать во времени — чего он не может
Теоретически я понимаю, как работает асинхронность, но когда пытаюсь работать с ней в реальном коде, это оказывается очень сложно.