Estaba siguiendo un tutorial cuando encontré este fragmento de código:
export function fetchUserData () { return axios.get('https://randomuser.me/api') .then(res => { return res; }) .catch(err => { console.error(err); }) }Cuando esta función se llama con:
const getUserData = async () => { let ud = await fetchUserData() setUserData(ud); console.log(ud); } Obtengo los datos que quiero, pero estoy confundido con el funcionamiento de la primera función. Si elimino return de return axios.get('https://randomuser.me/api') ya no funciona, y es un parámetro de la función de devolución de llamada de .then , ¿siempre es el retorno de la función anterior?
Supongo que es debido a algunas de las abreviaturas de javascript que no conozco, así que ¿alguien podría explicarme? Gracias.
ES6 introdujo la idea de una Promesa , que se compone del código de producción y consumo. Producir código hace algo y toma tiempo, como recuperar información de un servicio externo. El código consumidor devuelve el resultado del código productor. En este caso, axios.get es el código productor, mientras que .then es el código consumidor. .then es el patrón que usa Javascript para resolver promesas y producir un resultado.
Axios es un cliente HTTP basado en promesas. Necesita declaración de return aquí porque la solicitud de axios esencialmente devuelve una promesa. Además, puede usar .then solo para llamadas de devolución basadas en promesas.
Busque más aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
// set requests const reqOne = axios.get(endpoint); const reqTwo = axios.get(endpoint); axios.all([reqOne, reqTwo]).then(axios.spread((...responses) => { const responseOne = responses[0] const responseTwo = responses[1] })).catch(errors => { // react on errors. })