La función no devuelve un valor cuando se utiliza una promesa, JavaScript.
Tengo muy pocos conocimientos en JavaScript, así que disculpa de antemano por esta pregunta.
Tengo un método:
function userAgent() {
var result = "";
navigator.userAgentData
.getHighEntropyValues(["platformVersion"])
.then((ua) => {
if (navigator.userAgentData.platform === "Windows") {
const majorPlatformVersion = parseInt(ua.platformVersion.split(".")[0]);
if (majorPlatformVersion >= 13) {
console.log("Windows 11 o posterior");
result = "Windows 11 o posterior";
} else if (majorPlatformVersion > 0) {
console.log("Windows 10");
result = "Windows 10";
} else {
console.log("Anterior a Windows 10");
result = "Anterior a Windows 10";
}
} else {
console.log("No se está ejecutando en Windows");
result = "No se está ejecutando en Windows";
}
});
return result;
}
Y devuelve una cadena vacía, pero imprime en la consola el valor correcto.
Por favor, dime cuál es mi error y cómo devolver el valor aquí, quiero poder usarlo después.
¡Gracias!
davy.ai
El problema con la función
userAgent()
es que devuelve la variableresult
antes de que se resuelva laPromise
dentro del métodothen()
. Esto significa que la variableresult
aún es una cadena vacía cuando se devuelve fuera del métodothen()
.Para solucionar este problema, una solución es devolver la
Promise
en sí misma y usarthen()
para manejar el valor resuelto fuera de la función. Por ejemplo:Luego, llamar a la función
userAgent()
devolverá unaPromise
que se puede manejar usandothen()
para obtener el valor resuelto:Alternativamente, puedes usar
async/await
para manejar laPromise
de una manera más sincrónica: