javascript - Javascript从函数返回数组
问题描述
我想知道为什么在从函数返回值后无法获取数组?控制台上的输出是一个空数组。
function fetchdates(){
let theDateTime,DatesSepTime,Dates = [];
fetch("./myfile.json")
.then((resp) => {
return resp.json();
})
.then((data) => {
for(let obj of data){
let theDateTime = obj.tweetcreatedts;
let DatesSepTime = theDateTime.split(" ");
let Dates = DatesSepTime[0];
//console.log(Dates);
}
})
return(Dates);
};
console.log(fetchdates());
解决方案
获取是异步的。
这意味着,它立即返回,并且在异步操作完成后函数执行将恢复。因此,如果您直接记录返回值,它当然不会包含处理后的值。
除此之外,你还有另一个问题是Dates
两次声明变量(你也对其他人这样做,顺便说一句,它是不必要的) - 首先它是一个空数组(这就是它立即返回的原因,这就是你得到空数组的原因结果),然后您为其分配一个不同的值,但这仅在异步方法执行恢复时发生。
我建议阅读以下内容:https ://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
推荐阅读
- r - 使用索引位置比较两列
- android - 如何删除不需要的支持 v4 可绘制文件夹
- c# - open form on html button click in asp.net using C#
- python - 如何从数组中选择单独的字符串值并将它们用作熊猫数据框 Python 中的列名?
- reactjs - 为什么我的数组过滤处理程序没有按预期工作?
- angular - 如何将属性值与角度 8 中的变量绑定?
- javascript - 有没有办法计算所有 DOM 元素的堆叠上下文,以便使用 JavaScript 比较上述位置的任意两个元素?
- bash - 在组命令中更改 $IFS 是半持久的
- angular - 如何解决或检测 Angular+ 中的内存泄漏?
- nfc - NFC iOS 13 读写故障