es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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}

Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la que console.log("PPPP", getdata()); está imprimiendo Promise { <pending> } en lugar de un valor es porque getdata() 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 ejecute io.on("connection", ...), que llamará a la función getdata() 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:

    (async () => {
      const data = await getdata(formData);
      console.log("Data:", data);
    })();
    

    Esto esperará a que getdata() se complete y devuelva el valor real, que luego se puede imprimir en pantalla.

Comments are closed.