Javascript JQuery/Ajax:如何将多个Ajax组合成一个带有响应的异步Ajax?
异步时是否可以使用$:Javascript JQuery/Ajax:如何将多个Ajax组合成一个带有响应的异步Ajax?,javascript,jquery,ajax,Javascript,Jquery,Ajax,异步时是否可以使用$: init: function() { console.log('begin'); $.when( {async: true}, this.ajax1(), this.ajax2(), this.ajax3() ).done(function() { console.log('success'); }, function () { console.log('error');
init: function() {
console.log('begin');
$.when(
{async: true},
this.ajax1(),
this.ajax2(),
this.ajax3()
).done(function() {
console.log('success');
}, function () {
console.log('error');
});
console.log('end');
}
每个ajax1、ajax2或ajax3都可以是同步或异步的
因为它不工作,所以我希望在控制台输出中看到下一个命令:
开始
结束
成功(或错误)
但实际输出总是:
开始
成功(或错误)
结束
您永远不应该使用同步ajax阿迪内奥
问题是我的一些AJAX是同步的,因为它们的结果是依赖的
当ajax1完成时,您不能调用ajax2吗。例如$ajax(){ ..,complete:function(){ajax2 call}–user3509208 因此,我使它们异步,并为那些依赖数据的人完成内部Ajax:
init: function() {
console.log('begin');
$.when(
{async: true},
this.ajax1(),
this.ajax2()
).done(function() {
console.log('success');
}, function () {
console.log('error');
});
console.log('end');
}
ajax1: function() {
return $.ajax('url', {
async: true,
success: ... ,
error: ...)
);
}
ajax2: function() {
return $.ajax('url', {
async: true,
success: ajax3(),
error: ...)
);
}
ajax3: function() {
return $.ajax('url', {
async: true,
success: ... ,
error: ...)
);
}
现在它开始工作了!
$。当以这种方式使用时,
是异步的,您总是不需要设置任何内容。但是,您永远不应该使用同步ajax。您不能在ajax1完成时调用ajax2。例如,$ajax(){……,complete:function(){ajax2 call}如果第一个参数不是deferred,那么它可能与jQuery
立即调用done回调有关。我的ajax中的$是同步的,这就是为什么它不工作的原因。类似的问题: