我需要发出多个$ .get请求,处理他们的响应,并在同一个数组中记录处理结果。代码如下所示:
$.get("http://mysite1", function(response){
results[x1] = y1;
}
$.get("http://mysite2", function(response){
results[x2] = y2;
}
// rest of the code, e.g., print results
在继续我的其余代码之前,有没有确保所有成功函数都已完成?
答案 0 :(得分:37)
有一个非常优雅的解决方案:jQuery Deferred对象。 $ .get返回一个实现Deferred接口的jqXHR对象 - 这些对象可以像这样组合:
var d1 = $.get(...);
var d2 = $.get(...);
$.when(d1, d2).done(function() {
// ...do stuff...
});
在http://api.jquery.com/category/deferred-object/和http://api.jquery.com/jQuery.when/
了解详情答案 1 :(得分:10)
$.when
可让您合并多个Deferred
s($.ajax
返回的内容)。
$.when( $.get(1), $.get(2) ).done(function(results1, results2) {
// results1 and results2 will be an array of arguments that would have been
// passed to the normal $.get callback
}).fail(function() {
// will be called if one (or both) requests fail. If a request does fail,
// the `done` callback will *not* be called even if one request succeeds.
});