【发布时间】:2022-01-23 10:49:03
【问题描述】:
我对 JavaScript 知之甚少,所以提前对这个问题表示歉意。
我有一个方法:
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 or later");
result = "Windows 11 or later";
} else if (majorPlatformVersion > 0) {
console.log("Windows 10");
result = "Windows 10";
} else {
console.log("Before Windows 10");
result = "Before Windows 10";
}
} else {
console.log("Not running on Windows");
result = "Not running on Windows";
}
});
return result;
}
它返回空字符串,但打印以控制正确的值。
请告诉我我的错误是什么以及如何在这里返回值,我想以后使用它。
谢谢!
【问题讨论】:
-
将每个
result =替换为return,并使用某种承诺解析器调用此函数。 -
@bbbbbbbbb 那是问题所在,返回不起作用。
-
@bbbbbbbbb '使用某种承诺解析器' 这是什么?
-
.getHighEntropyValues是异步的。由于您在非异步函数中使用它,因此它基本上会在返回后的某个时间发生。 -
超级超级经典的问题,一天被问好多次。我已将其标记为 stackoverflow.com/questions/14220321/… 的重复项
标签: javascript promise user-agent