এখানে আমি একটি কলব্যাক অবজেক্ট লিখেছি যেখানে আপনি সমস্ত সম্পূর্ণ হয়ে গেলে আপনি একক কলব্যাক সেট করতে পারেন বা প্রত্যেকের নিজস্ব কলব্যাক থাকতে দেওয়া এবং একবারে সমস্ত সম্পূর্ণ হয়ে গেলে:
বিজ্ঞপ্তি
যেহেতু jQuery 1.5+ আপনি অন্য উত্তরে বর্ণিত হিসাবে মুলতুবি পদ্ধতি ব্যবহার করতে পারেন:
$.when($.ajax(), [...]).then(function(results){},[...]);
এখানে পিছিয়ে দেওয়া উদাহরণ
jQuery জন্য <1.5 নীচের কাজ করবে বা আপনার অজ্যাক্স কলগুলি অজানা সময়ে ফায়ার করতে হবে এখানে দুটি বোতামের সাহায্যে দেখানো হয়েছে: উভয় বোতাম ক্লিক করার পরে ফায়ার করা হয়েছে
[ব্যবহার]
একবার সম্পূর্ণ হয়ে গেলে একক কলব্যাকের জন্য : কার্যকারী উদাহরণ
// 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);
};
};
})();