我对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()。或者,如果为其配置了构建过程,则可以使用asyncawait来执行以下操作:

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


这需要在标记为async的函数中

关于javascript - 从API调用后从Promise返回数据并将其存储在变量中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58571813/

10-09 19:51