首页 > 解决方案 > 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());

标签: javascriptarraysjsonfunction

解决方案


获取是异步的。

这意味着,它立即返回,并且在异步操作完成后函数执行将恢复。因此,如果您直接记录返回值,它当然不会包含处理后的值。

除此之外,你还有另一个问题是Dates两次声明变量(你也对其他人这样做,顺便说一句,它是不必要的) - 首先它是一个空数组(这就是它立即返回的原因,这就是你得到空数组的原因结果),然后您为其分配一个不同的值,但这仅在异步方法执行恢复时发生。

我建议阅读以下内容:https ://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch


推荐阅读