我对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()
函数允许我将结果存储在变量中。退货不起作用,因为我将收到另一个待处理的Promise。
答案 0 :(得分:2)
您可以这样做:
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
和await
来做到:
try {
const data = await getdata();
} catch(err) {
}
这需要在标记为async
的函数中使用
答案 1 :(得分:0)
首先,我们需要声明一个变量,例如temp。然后使用提取API请求带有URL的查询。如果服务器状态为200,则它将返回一个Promise,我们需要使用then
方法,先传递任何参数(res,response,r any ...),然后传递一个胖箭头函数(=>
)这样我们就可以将响应设为json格式。之后,我们需要使用另一个then
方法来返回json输出并将该值分配给我们声明的temp变量。
但是,如果发生任何错误(例如500、400、404服务器错误),我们需要使用带有错误参数的catch
方法并对其进行调试。
let temp;
fetch('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&outputsize=full&apikey=demo')
.then(res => res.json())
.then(data => temp = data)
.catch(err => console.log(err));