A menudo leo que async/await await es mejor que .then() . Aprendí, para usar esperar, necesito una función asíncrona. Para manejar errores, necesito try/catch . Así que construí esta simple solicitud de obtención:
const isAvailable = async (url) => { try { const response = await fetch(url); const data = await response.json(); return data; } catch (err) { console.error(err); } }; const fetchedData = isAvailable("/api"); console.log(fetchedData); // Returns: Promise {status: "pending"} Cuando veo esto, es de alguna manera lógico para mí, pero realmente no puedo entenderlo. fetch() devuelve una Promesa, por lo que fetchedData es una Promesa. Pero el grito del bloque de prueba devuelve un objeto, por lo que fetchedData debería ser una Promesa. Incluso cuando veo esto, de alguna manera es lógico para mí, pero tampoco puedo entenderlo. fetchedData es una Promesa pendiente y también debe esperarse, así que probé:
const fetchedData = await isAvailable("/api"); //SyntaxError: Unexpected identifier 'isAvailable'. Expected ';' after variable declaration. console.log(fetchedData); Diría que esto se debe a que llamo await sin estar en una función asíncrona, así que terminé con:
isAvailable("/api").then((fetchedData) => { console.log(fetchedData); }); Pero ahora vuelvo a .then() lo que quiero evitar en mi ejercicio.