我在 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/