Javascript 为什么我不能将数组的位置0与_proto__一起使用?

Javascript 为什么我不能将数组的位置0与_proto__一起使用?,javascript,html,arrays,json,console,Javascript,Html,Arrays,Json,Console,我无法使用代码中的数组。我不知道为什么会有\uuuuuuuuuuuuuuuuuuuuu 它看起来像一个普通数组,但当我想访问位置0(arr[0])的值时,控制台返回“undefined” 以下是javascript代码: const-apirl=”https://api.covid19api.com/dayone/country/south-africa'; 异步函数getData(){ const response=等待获取(apirl); const data=wait response

我无法使用代码中的数组。我不知道为什么会有
\uuuuuuuuuuuuuuuuuuuuu

它看起来像一个普通数组,但当我想访问位置0(arr[0])的值时,控制台返回“undefined”

以下是javascript代码:

const-apirl=”https://api.covid19api.com/dayone/country/south-africa';
异步函数getData(){
const response=等待获取(apirl);
const data=wait response.json();
const arr=data.reduce((acc,cur)=>cur.Confirmed?[…acc,cur.Confirmed]:acc,[]);
返回arr;
}
var-res=[];
getData()。然后(val=>{
推力(val);
})  

控制台日志(res)这是因为行
console.log(res)的完成速度比函数
getData()

const-apirl=”https://api.covid19api.com/dayone/country/south-africa';
异步函数getData(){
const response=等待获取(apirl);
const data=wait response.json();
const arr=data.reduce((acc,cur)=>cur.Confirmed?[…acc,cur.Confirmed]:acc,[]);
返回arr;
}
var-res=[];
getData()。然后(val=>{
推力(val);
控制台日志(res);
console.log(res[0]);
})
试试这个:


康斯特阿皮乌尔酒店https://api.covid19api.com/dayone/country/south-africa';
异步函数getData(){
const response=等待获取(apirl);
const data=wait response.json();
const arr=data.reduce((acc,cur)=>cur.Confirmed?[…acc,cur.Confirmed]:acc,[]);
返回arr;
}
函数showData(回调){
getData()。然后(val=>{
推力(val);
});
setTimeout(函数(){
回调();
}, 1500);
}
showData(函数(){
console.log(res[0])
});

康斯特阿皮乌尔酒店https://api.covid19api.com/dayone/country/south-africa';
异步函数getData(){
const response=等待获取(apirl);
const data=wait response.json();
const arr=data.reduce((acc,cur)=>cur.Confirmed?[…acc,cur.Confirmed]:acc,[]);
返回arr;
}
var-res=[];
函数showData(回调){
getData()。然后(val=>{
推力(val);
回调();
});
}
showData(函数(){
console.log(res[0])

});在承诺上注册处理程序后,无法立即访问承诺的结果(即其已实现的值),因为承诺代码从不同步调用提供给它的处理程序

当承诺被解析或拒绝时,承诺代码会将要执行处理程序的作业(并监视其行为)放入承诺作业队列中,将正在执行的任务从队列留给事件循环管理器

此演示显示数据不是由
然后
在同一调用中从事件循环传输的,而是在返回到事件循环后可用:

letdatapromise=newpromise(解析=>resolve(“你好,我是数据”);
var-res=[];
res.ready=false;
然后(数据=>{
res.push(数据);
res.ready=true;
});
函数processData(){
console.log(
“准备就绪:%s”,数据:%s,
res.ready,res[0]);
}
processData();//不起作用

setTimeout(processData,20);//会工作的
当然,这很有意义!谢谢。我现在遇到的问题是无法从代码的其他部分访问res[0]。您可以将这些相关函数放在函数getData()和.then()之后。例如,getData().then(…).then(…)@martoxx99谢谢你的解释!我刚试过那段代码,但我仍然有同样的问题。当我想访问res[0]时,我没有定义