これが私が書いたコールバックオブジェクトです。1つのコールバックをすべて完了すると起動するように設定するか、各コールバックに独自のコールバックを持たせて、すべてが完了するとそれらをすべて起動することができます。
通知
jQuery 1.5以降では、別の回答で説明されているように遅延メソッドを使用できます。
  $.when($.ajax(), [...]).then(function(results){},[...]);
ここで延期の例
jQuery <1.5の場合、次のように機能します。または、次の2つのボタンで示すように、不明な時間にajax呼び出しを発生させる必要がある場合:両方のボタンがクリックされた後に発生します
[使用法]
一度完了した単一のコールバックの場合:実例
// initialize here
var requestCallback = new MyRequestsCompleted({
    numRequest: 3,
    singleCallback: function(){
        alert( "I'm the callback");
    }
});
//usage in request
$.ajax({
    url: '/echo/html/',
    success: function(data) {
        requestCallback.requestComplete(true);
    }
});
$.ajax({
    url: '/echo/html/',
    success: function(data) {
        requestCallback.requestComplete(true);
    }
});
$.ajax({
    url: '/echo/html/',
    success: function(data) {
        requestCallback.requestComplete(true);
    }
});
それぞれが自分のコールバックをするとき、すべての完全な:実施例
//initialize 
var requestCallback = new MyRequestsCompleted({
    numRequest: 3
});
//usage in request
$.ajax({
    url: '/echo/html/',
    success: function(data) {
        requestCallback.addCallbackToQueue(true, function() {
            alert('Im the first callback');
        });
    }
});
$.ajax({
    url: '/echo/html/',
    success: function(data) {
        requestCallback.addCallbackToQueue(true, function() {
            alert('Im the second callback');
        });
    }
});
$.ajax({
    url: '/echo/html/',
    success: function(data) {
        requestCallback.addCallbackToQueue(true, function() {
            alert('Im the third callback');
        });
    }
});
[コード]
var MyRequestsCompleted = (function() {
    var numRequestToComplete, requestsCompleted, callBacks, singleCallBack;
    return function(options) {
        if (!options) options = {};
        numRequestToComplete = options.numRequest || 0;
        requestsCompleted = options.requestsCompleted || 0;
        callBacks = [];
        var fireCallbacks = function() {
            alert("we're all complete");
            for (var i = 0; i < callBacks.length; i++) callBacks[i]();
        };
        if (options.singleCallback) callBacks.push(options.singleCallback);
        this.addCallbackToQueue = function(isComplete, callback) {
            if (isComplete) requestsCompleted++;
            if (callback) callBacks.push(callback);
            if (requestsCompleted == numRequestToComplete) fireCallbacks();
        };
        this.requestComplete = function(isComplete) {
            if (isComplete) requestsCompleted++;
            if (requestsCompleted == numRequestToComplete) fireCallbacks();
        };
        this.setCallback = function(callback) {
            callBacks.push(callBack);
        };
    };
})();