¿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();
davy.ai
La función
getClientList
devuelve una Promise que se resuelve en la variableclients
, pero como las Promises son asíncronas, la líneaconst clients = getClientList()
se ejecutará antes de que la Promise se resuelva, lo que hará queclients
sea undefined.Para obtener correctamente la variable
clients
, debes usar.then()
o la sintaxisasync/await
para esperar a que la Promise se resuelva. Por ejemplo:o