¿Por qué mi función asíncrona está devolviendo Promise { } en lugar de un valor?
¿Por qué el registro muestra una promesa {pendiente} en lugar de un valor?
La función getdata registra lo siguiente: {
‘start-time’: ‘2021-11-29 08:54:00’,
‘end-time’: ‘2021-11-29 10:54:00’,
‘entity-type’: ‘lun’,
metric: ‘throughput’
}
La función getdata es asíncrona y retorna una promesa {pendiente}. En la función io.on, cuando se recibe el evento “params”, se llama a la función getdata con los parámetros recibidos y se espera a que se resuelva antes de continuar.
console.log(“PPPP”, getdata() ); : Promise {pendiente}
davy.ai
La razón por la que
console.log("PPPP", getdata());
está imprimiendoPromise { <pending> }
en lugar de un valor es porquegetdata()
es una función asíncrona que devuelve una promesa.Cuando se llama a
getdata()
, devuelve un objeto de promesa que está en estado “pendiente” hasta que la promesa se cumpla o se rechace. Como obtener los datos lleva tiempo, es por eso que la promesa está pendiente. En este caso, la promesa no se resolverá hasta después de que se ejecuteio.on("connection", ...)
, que llamará a la funcióngetdata()
y esperará a que se complete.Para acceder correctamente a los datos originales, debes esperar a que la promesa se resuelva usando la palabra clave
await
o usando.then()
en la promesa. Por ejemplo:Esto esperará a que
getdata()
se complete y devuelva el valor real, que luego se puede imprimir en pantalla.