Javascript 从多个回调返回值
Javascript return value from multiple callback
我想等待所有回调函数完成,然后返回最终结果,如下所示:
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);
第一个警报向我显示正确的对象,但第二个警报仍然显示 null。为什么?如何解决?
你可以使用 jquery 的when
来等待多个请求。 您只需要jQueryFunction
即可返回jqXHR
。
function jQueryFunction(){
return $.ajax( /* ... */ );
}
var requests = [];
for(var i = 0; i < 10; i++)
{
var xhr = jQueryFunction( /* ... */ );
requests.push(xhr);
}
$.when.apply($, requests).done(function(){
// EVERYTHING IS NOW DONE, DO SOMETHING HERE
});
相关文章:
- 如何使for循环等待回调返回值
- node.js mongojs findOne回调返回错误为null
- 使用嵌套回调的值作为父函数的返回
- 从Meteor.method中的回调返回值
- Javascript 从多个回调返回值
- 从 JavaScript 回调返回一个值
- 从回调返回值
- Javascript回调返回值
- 如何在Mongoose中为变量分配回调返回值
- javascript从回调返回(计时)中为变量赋值
- 当内部函数异步执行某些操作时,如何从外部函数的回调返回值
- 异步函数回调返回值
- 从新对象回调返回值
- 返回点击回调的值
- 如何在nodejs中处理多个回调返回值
- 从iTunes搜索API回调返回值
- Javascript映射和回调返回值不受影响
- 从事件发射器回调返回一个值
- 从Ajax回调返回值
- 如何等待异步方法的回调返回值