我想等待所有回调函数完成,然后返回最终结果,如下所示:
var jsonArray = new Array();
for(var i = 0; i < 10; i++)
{
jQueryFunction(i, function(json){
jsonArray[i] = json;
});
}
return jsonArray;
jQueryFunction 是一个包含异步 ajax 和回调的函数,返回一个称为 json 的值。我想等待for循环完成,然后将所有返回值放入jsonArray,最后返回。
我的目标是等待所有 jQueryFunction 回调完成并将它们的返回存储到 jsonArray 中,然后在最后返回 jsonArray。我以前的目标不起作用,因为它立即返回 jsonArray 并且不等待 for 循环
我试过这样:
function jQueryFunction(ptd_url, callback)
{
$.ajax
({
type: "GET",
async: true,
url: ptd_url,
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "tpsHandler",
success: function(json)
{
return callback(json);
}
});
}
function finalResultFunction()
{
var jsonArray = new Array();
for(var i = 0; i < 10; i++)
{
jQueryFunction(1, function(json){
jsonArray[i] = json;
alert(jsonArray[i]);
});
}
$.when.apply($, jsonArray).done(function(){
alert(jsonArray[0]);
...
}
setInterval(finalResultFunction,1000);
第一个警报向我显示了正确的对象,但第二个警报仍然显示我为空。为什么?如何解决?