我通过AJAX获取JSON并将部分结果推送到在AJAX请求之前声明的数组。当我在一次完成array.push时,我在console.log()中查询queryTop变量,即使AJAX响应有JSON数据,它也会返回一个空数组。为什么是这样?我在其他地方读到因为它是异步的,其他代码在AJAX调用返回数据之前运行但是在这里,我使用.done()函数和pushQueries的回调。为什么它还没有运作?我该如何解决这个问题?
function getQueries() {
var queriesFailed = [],
queriesTop = [];
$.ajax({url: "getStats"}).done(function(data) {
pushQueries(data);
});
function pushQueries(data) {
var resultsFailed = data['query']['failed']['queries'],
resultsTop = data['query']['top']['queries'];
for (var i = 0; i < resultsFailed.length; i++) {
queriesFailed.push(resultsFailed[i]);
};
for (var i = 0; i < resultsTop.length; i++) {
queriesTop.push(resultsTop[i]);
};
}
console.log(queriesTop);
return queriesTop;
}