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.

¿Cómo usar el valor del objeto Promise en el objeto global?

Como se muestra a continuación, hay una función que extrae datos de un servidor específico utilizando una función que utiliza un objeto de promesa llamado axios.

const getData = async () => {
    try {
        const result = await axios.get(
            "https://b2ef45f8-e166-41d7-bd35-9ad159028fbf.mock.pstmn.io/test"
        );
    
        const products = result.data.products;
    
        console.log(products);
    
        console.log(`estado:(${result.status}) conexión exitosa`);
    
        const data = JSON.stringify(products);
    
        return data;
    } catch (err) {
        console.error(err);
    
        console.log("error al obtener el resultado.");
    
        return err;
    }
};

console.log(getData());

Es libre utilizar el valor dentro de la función. Cuando intento obtener el valor llamando a esa función en el espacio global, primero se imprime en la consola el valor Promise { }, seguido del contenido de la función anterior. Entiendo que esto se debe a que las promesas son asíncronas. Sin embargo, necesito usar este valor de promesa (variable data) en el contexto global, así que quiero saber cómo usarlo en el contexto global.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para utilizar el valor devuelto por la función getData() en el contexto global, puedes utilizar la función .then() en la promesa devuelta o declarar una función async y usar await para esperar a que la promesa se resuelva.

    Utilizando la función .then():

    getData().then((data) => {
      console.log(data);
    }).catch((err) => {
      console.error(err);
    });
    

    Utilizando async/await:

    const main = async () => {
      try {
        const data = await getData();
        console.log(data);
      } catch (err) {
        console.error(err);
      }
    };
    
    main();
    

    Ambos métodos esperarán a que la promesa se resuelva antes de utilizar el valor devuelto en el contexto global.

Comments are closed.