在下面的代码中,我想知道为什么我的 console.log(dataArray) 显示一个空数组。我认为console.log可能会在ajax请求完成拉取数据之前被调用。如果是这种情况,有什么方法可以在调用 console.log 之前等待 ajax 请求完成吗?
var dataArray = [];
var gdpAPI = "https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json";
$.getJSON( gdpAPI, {
format: "json",
async: false
})
.done(function( data ) {
yearsData = data['data']
$.each(yearsData, function(i){
dataArray.push(yearsData[i]);
})
});
console.log(dataArray);
提前谢谢您。 怀亚特
最佳答案
异步代码
您是对的,console.log
在请求完成之前被调用。只需将日志语句放入 .done
部分即可。
Working Fiddle
var dataArray = [];
var gdpAPI = "https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json";
$.getJSON(gdpAPI, {
format: "json",
async: false
})
.done(function(data) {
yearsData = data['data']
$.each(yearsData, function(i) {
dataArray.push(yearsData[i]);
})
console.log('length: ' + dataArray.length,dataArray);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
关于javascript - 在异步请求期间难以将数据推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40826166/