如何在JavaScript中将承诺的返回分配给全局变量?
所以。。。我有一个返回承诺的函数,我想把全局变量的值赋给这个承诺返回的任何东西。我该怎么做如何在JavaScript中将承诺的返回分配给全局变量?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,所以。。。我有一个返回承诺的函数,我想把全局变量的值赋给这个承诺返回的任何东西。我该怎么做 function a() { // Returns a promise } let b = a(); 现在,b是一个承诺,但我希望它是承诺返回的任何东西。 我不想使用。那么,因为我想在if语句中使用b function a() { // Returns a promise } let b = a(); if (b) { // Do stuff... } 我知道我可以用它 function
function a() {
// Returns a promise
}
let b = a();
现在,b是一个承诺,但我希望它是承诺返回的任何东西。
我不想使用。那么,因为我想在if语句中使用b
function a() {
// Returns a promise
}
let b = a();
if (b) {
// Do stuff...
}
我知道我可以用它
function a() {
// Returns a promise
}
let b = a();
b.then(result => {
if (result) {
}
});
甚至
function a() {
// Returns a promise
}
a().then(result => {
if (result) {
}
});
但这对我来说根本不管用。有什么想法吗?
让b;然后(result=>b=result)代码>。。。当然,您需要注意如何访问b
,因为您不知道它何时有结果……您可以稍后使用setTimeout
或setInterval
访问b
。。。那最终会奏效的。。但是在它工作之前,b
将是未定义的。不,没有秘密方法。你基本上是在问你是否能在比萨饼送到之前吃下它。您只需要学习使用异步范例。如果有一个合理的方法可以做到这一点,它将出现在所有文档中,您不需要问这个问题。。。就像病毒一样。。。它会感染任何处理它的代码。。。最好的解决方案是学习使用异步。。。另一个解决方案(async()=>{let b=await a();if(b){…}()
-它看起来是同步的,但是它不是(如果代码已经在异步函数中,则不需要IIFE
),使用然后或await
是访问承诺结果值的唯一方法。它会像对其他人一样对你有用。