Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中将承诺的返回分配给全局变量?_Javascript_Asynchronous_Promise - Fatal编程技术网

如何在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
是访问承诺结果值的唯一方法。它会像对其他人一样对你有用。