javascript - 访问 Ajax 外部在成功回调中创建的数组

标签 javascript arrays ajax

我在 JavaScript 中有一个 CSV 解析函数,它可以从 CSV 获取数据(电影名称),并使用循环中的 Ajax 调用获取数据。

movies = new Array();

for (var i = 1; i < allData.length; i++) {
    var mName = allData[i][0];
    var mPath = allData[i][1];
    // console.log(decodeURIComponent(mName));

    $.get(apiCall, function showData(data) {
        if (data) {
            mData = data.results;
            if (mData.length > 1) {
                var urlData = new URLSearchParams(this.url);
                var movie_name = urlData.get('query');
                movies.push(movie_name);
            }
        }
    })
}

如果任何电影的数据超过一条记录,它会将其保存为数组中的冲突。

问题是,我可以访问内部 if 内的电影数组(但它处于迭代中,所以我无法使用它),并且在循环结束时无法访问它。我怎样才能访问它?

最佳答案

您不应在 for 循环内进行 api 调用。相反,这样做,

   movies = new Array();

    function makeApiCallForEntireArray(index, arr, cb){
        if(arr.length == index){
           cb(true);
           return;
        }

        $.get(apiCall, function showData(data) {
        if (data) {
            mData = data.results;
            if (mData.length > 1) {
                var urlData = new URLSearchParams(this.url);
                var movie_name = urlData.get('query');
                movies.push(movie_name);
            }
        }
        makeApiCallForEntireArray(index+1, arr, cb);
    })
    }

    makeApiCallForEntireArray(0, allData, function(){
       //api calls finished
       //movie accesssible here with all the data
    });

关于javascript - 访问 Ajax 外部在成功回调中创建的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42291587/

相关文章:

javascript - windows azure 中的 Neo4j 虚拟机

javascript - 如何在 JavaScript 中检查两个 int 数组是否是排列

javascript - 在警告框中显示数组内容

jquery - Ajax post 方法在 codeigniter 中不起作用

c# - 对 async Task<string> 的 AJAX 调用成功命中该方法,但返回失败

Javascript 解析 http 响应时出错

javascript - 如何停止间隔功能

javascript - 如何使用function属性作为onclick事件(input元素)的属性?

java - 自动给数组赋值

jquery - 使用 AJAX 加载 ExpressionEngine 中的条目