Как сигнализировать, когда AJAX завершает - PullRequest
3 голосов
/ 26 сентября 2011

У меня есть два запроса 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 для сбоя обратного вызова?)

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

Посмотрите на методы отложенного / обещания jquery, они предназначены именно для того, что вы пытаетесь сделать.

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

http://api.jquery.com/jQuery.when/

http://api.jquery.com/deferred.promise/

3 голосов
/ 26 сентября 2011

Вы делаете это так:

$.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.when: http://api.jquery.com/jQuery.when/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...