Javascript 从Promise返回数据,并在API调用后将其存储在变量中

Javascript 从Promise返回数据,并在API调用后将其存储在变量中,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我对Promises还很陌生,在这里我发现了很多关于如何访问实际值的例子,这通常是通过console.log完成的。但我的目标是将结果存储在变量中并使用它 getdata = () => fetch( "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&outputsize=full&apikey=demo" ) .then(response =&

我对Promises还很陌生,在这里我发现了很多关于如何访问实际值的例子,这通常是通过
console.log
完成的。但我的目标是将结果存储在变量中并使用它

getdata = () =>
  fetch(
    "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&outputsize=full&apikey=demo"
  )
    .then(response => {
      if (response.status === 200) {
        return response.json();
      } else {
        throw new Error("This is an error");
      }
    })
    .then(data => {
      console.log(data);
    });

getdata();

这个代码有效。你能帮我重写一下吗?
getdata()
函数允许我将结果存储在变量中。退货不起作用,因为我将收到另一个待定的承诺。

您可以这样做:

getdata = () =>
  fetch(
    "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&outputsize=full&apikey=demo"
  ).then(response => {
    if (response.status === 200) {
      return response.json();
    } else {
      throw new Error("This is an error");
    }
  });

getdata().then(data => {
  //I can do whatever with data
});
当然,您还希望处理请求失败的场景,因此您还可以链接一个
.catch()
。或者,如果为其配置了构建过程,则可以使用
async
wait
,以便执行以下操作:

try {
  const data = await getdata();
} catch(err) {
}

这需要在标记为
async

的函数中。您可以这样做:

getdata = () =>
  fetch(
    "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&outputsize=full&apikey=demo"
  ).then(response => {
    if (response.status === 200) {
      return response.json();
    } else {
      throw new Error("This is an error");
    }
  });

getdata().then(data => {
  //I can do whatever with data
});
当然,您还希望处理请求失败的场景,因此您还可以链接一个
.catch()
。或者,如果为其配置了构建过程,则可以使用
async
wait
,以便执行以下操作:

try {
  const data = await getdata();
} catch(err) {
}

这需要在标记为
async

的函数中。首先,我们需要声明一个变量,比如说temp。然后使用fetch API请求带有URL的查询。如果服务器状态为200,那么它将返回一个承诺,我们需要使用
然后
方法,通过传递任何参数(res、response、r anything…),然后是一个胖箭头函数(
=>
),以便我们可以将响应作为json格式。然后,我们需要使用另一个
then
方法返回json输出,并将值分配给声明的temp变量

但如果有任何错误,比如500、400、404服务器错误,我们需要使用带有err参数的
catch
方法并将其处理掉

let-temp;
取('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&outputsize=full&apikey=demo')
.then(res=>res.json())
.然后(数据=>温度=数据)
.catch(err=>console.log(err));

首先我们需要声明一个变量,比如说temp。然后使用fetch API请求带有URL的查询。如果服务器状态为200,那么它将返回一个承诺,我们需要使用
然后
方法,通过传递任何参数(res、response、r anything…),然后是一个胖箭头函数(
=>
),以便我们可以将响应作为json格式。然后,我们需要使用另一个
then
方法返回json输出,并将值分配给声明的temp变量

但如果有任何错误,比如500、400、404服务器错误,我们需要使用带有err参数的
catch
方法并将其处理掉

let-temp;
取('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&outputsize=full&apikey=demo')
.then(res=>res.json())
.然后(数据=>温度=数据)
.catch(err=>console.log(err));

Typo,getData必须是getdataTypo,getData必须是GetDataDefiniting变量并存储它100%不起作用。请不要只发布代码作为答案,还包括解释代码的作用以及它如何解决问题。带有解释的答案通常质量较高,并且更有可能吸引更多的选票。定义变量并将其100%存储不起作用。请不要仅将代码作为答案发布,还要包括解释代码的作用以及它如何解决问题。带有解释的答案通常质量更高,更容易吸引选票。