Quiero almacenar un objeto devuelto por una promesa dentro de una variable.
Utilicé then y catch para obtener el objeto, pero cuando registro el resultado de mi objeto queda undefined .
Aquí está mi código :
let allStudents; const getStudents = async () => { try { const response = await Axios.get('/api/v1/student/') return response } catch (error) { console.error(error); } } let gsk = getStudents().then((res) => { allStudents = res.data return allStudents }).catch((err) => { console.log(err); }) console.log(allStudents)Cuando use .then() en una promesa, su devolución de llamada no se llamará de inmediato. En particular, la función que llama a .then() continuará ejecutándose, de modo que las líneas que vienen más adelante en la función se ejecutarán antes de su devolución de llamada.
En su ejemplo, la asignación a allStudents no ocurre hasta que se ejecuta la devolución de llamada, y esto no sucederá hasta que haya intentado imprimir el valor con console.log(allStudents) .
let gsk = getStudents().then((res) => { // this code not executed until getStudents() complete allStudents= res.data return allStudents }) // this code is executed before getStudents() completes console.log(allStudents) Para esperar a que se resuelva la promesa antes de continuar con la ejecución, podría usar await en su lugar:
let res = await getStudents(); // do not continue until getStudents() completes allStudents = res.data; console.log(allStudents);