我想使用fetch从外部源获取数据集,然后将返回的值分配给一个变量,以便在整个代码中访问存储的数组数据。这是应该从中检索数据的URL,下面是我遇到麻烦的代码片段。
const dataset=async function getData(){
const response =await fetch("https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json")
const parsedData=await response.json()
const result=await parsedData.data
return result
}
console.log(dataset())
这个函数是在执行fetch之后调用的,返回的是一个promise,通过它我仍然无法访问数组数据。将从外部源获取的数据存储到变量中,然后再使用它,这是正确的方法吗?(提取的数据点数组稍后应用于通过d3.库创建条形图(
虽然await
看起来是同步的,但它所做的只是允许承诺(数据将在未来交付或不交付的承诺(解决或拒绝。因此,您不能立即将变量分配给尚不存在的数据。
JS事件循环基本上是一个排队系统。事情进展顺利,一些事件会立即得到解决并从队列中删除(例如,鼠标事件(,但承诺需要时间,但当它们完成时,就会从队列中移除。但在这种情况发生的同时,其他事件也会突然出现,所以事件不会停止发生。
因此,当你还在学习promise是如何工作的时候,也许可以设置一个等待数据的控制函数,然后运行一个新函数,用这些数据创建图表。
const data = '["data"]';
function mockApi() {
return new Promise((res, rej) => {
setTimeout(() => res(data), 1000)
});
}
async function main() {
const data = await mockApi()
showData(JSON.parse(data));
}
function showData(data) {
console.log(data);
}
main();