Javascript 如何在AJAX完成时发出信号

Javascript 如何在AJAX完成时发出信号,javascript,jquery,ajax,signals,Javascript,Jquery,Ajax,Signals,我有两个ajax$.get()请求需要同步 本质上 var signal1 = false; var signal2 = false; $.get(url, {}, function (data) { signal1 = true;//callback complete. },'json'); $.get(url2,

我有两个ajax
$.get()
请求需要同步

本质上

var signal1 = false;
var signal2 = false;

    $.get(url,
                {},
                function (data) { 
                    signal1 = true;//callback complete.
                },'json');

    $.get(url2,
                {},
                function (data) { 
                    signal2 = true;//callback complete.
                },'json');

    when(signal1 && signal2 == true)
       $.get(url3...

我该如何完成这类任务呢?(另外,失败回调的AJAX特征是什么?

看看jquery延迟/承诺方法,它们正是您想要做的

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1,  a2){
   // a1 and a2 are the results of your two calls.
});

您可以这样做:

$.when(
    $.get(url, {}, function(data) { 
        // signal 1 complete
    }, 'json'),
    $.get(url2, {}, function(data) { 
        // signal 2 complete
    }, 'json')
).then(function() {
    // success after both methods finish
}, function() {
    // failure method
});

参见
jQuery。当
时:

两个答案都很好。你得到了答题分数,因为你还取消了奖金问题。请注意,
.then(success\u func)。fail(failure\u func)
的另一个选择就是
。then(success\u func,failure\u func)
。他们都工作。不过,我更喜欢用
fail
方法明确地解释它。有些东西不起作用。我注意到这里的回调是在
$.get()
中定义的。这其实没关系,我觉得更好……但合法吗?我在网上找到的代码定义了
then()
@P.Brian.Mackey中的回调,我将其更新为使用我在评论中提到的第二种形式
。然后(success\u func,failture\u func)
并使用
$。get
就可以了。在内部,它只是一个特定的
$.ajax
调用的简写。如何用这种语法定义返回类型?(html/json)您可以使用特定的方法($.get/$.getJSON)或扩展对$.ajax的调用来指定。这就是你的意思吗?