El siguiente código muestra 'indefinido' en la consola. mientras que la API tiene datos dentro de ella.
const getFakePerson = async () => { let res = await fetch("https://api.randomuser.me/?nat=US&results=1"); let { results } = res.json(); console.log(results); } getFakePerson();Resultado:
res.json() devuelve una promesa. Tienes que await .
const getFakePerson = async () => { let res = await fetch("https://api.randomuser.me/?nat=US&results=1"); let results = await res.json(); console.log(results); } getFakePerson();Como alternativa, puede utilizar
res.json().then(data => console.log(data))A partir de la discusión y la prueba del código, supe que tenemos que agregar la palabra clave await antes res.json() .
const getFakePerson = async () => { let res = await fetch("https://api.randomuser.me/?nat=US&results=1"); let { results } = await res.json(); console.log(results); } getFakePerson();El elefante en la habitación, como ya se señaló, era que en la línea 3 faltaba una await para la llamada res.json() .
Además de eso, recomendaría separar las preocupaciones aquí. Deje que getRandomPerson devuelva a la persona y luego console.log más adelante en el proceso. Como esto:
const getFakePerson = async () => { let res = await fetch("https://api.randomuser.me/?nat=US&results=1"); let { results: person } = await res.json(); return person } getFakePerson().then(generatedPerson => { console.log(generatedPerson) // ... do more here ... });