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 puedo usar una variable fuera del alcance de .then()?

Tengo la siguiente situación:

¿Por qué la variable clients se resuelve como undefined cuando la llamo a continuación?

function getClientList() {
  TeamSpeak.connect({
    host: "localhost",
    serverport: 9987,
    nickname: "NodeJS Query Framework",
  }).then(async (teamspeak) => {
    const clients = await teamspeak.clientList({ clientType: 0 });

    if (clients) return clients;
    else return null;
  });

}

Cuando lo llamo de esa manera, se resuelve como undefined.

const clients = getClientList();
Tags:  ,

Answer

  1. Avatar for davy.ai

    La función getClientList devuelve una Promise que se resuelve en la variable clients, pero como las Promises son asíncronas, la línea const clients = getClientList() se ejecutará antes de que la Promise se resuelva, lo que hará que clients sea undefined.

    Para obtener correctamente la variable clients, debes usar .then() o la sintaxis async/await para esperar a que la Promise se resuelva. Por ejemplo:

    getClientList().then(clients => {
      console.log(clients); // debería mostrar en el registro el array de clients
    });
    

    o

    async function main() {
      const clients = await getClientList();
      console.log(clients); // debería mostrar en el registro el array de clients
    }
    main();
    

Comments are closed.