এখানে কী চলছে তার একটি স্বতন্ত্র উদাহরণ: http://jsfiddle.net/adamjford/YNGcm/20/
এইচটিএমএল:
<a href="#">Click me!</a>
<div></div>
javascript:
function getSomeDeferredStuff() {
var deferreds = [];
var i = 1;
for (i = 1; i <= 10; i++) {
var count = i;
deferreds.push(
$.post('/echo/html/', {
html: "<p>Task #" + count + " complete.",
delay: count
}).success(function(data) {
$("div").append(data);
}));
}
return deferreds;
}
$(function() {
$("a").click(function() {
var deferreds = getSomeDeferredStuff();
$.when(deferreds).done(function() {
$("div").append("<p>All done!</p>");
});
});
});
আমি চাই "সব শেষ!" স্থগিত করা সমস্ত কাজ সমাপ্ত হওয়ার পরে উপস্থিত হতে পারে, তবে $.when()
ডিফার্ড অবজেক্টের অ্যারে কীভাবে পরিচালনা করতে হয় তা জানা যায় না। "সব শেষ!" প্রথমে ঘটছে কারণ অ্যারেটি একটি ডিফার্ড অবজেক্ট নয়, তাই jQuery এগিয়ে যায় এবং ধরে নেওয়া যায় যে এটি সবেমাত্র সম্পন্ন হয়েছে।
আমি জানি যে কেউ বস্তুগুলি যেমন ফাংশনে পাস করতে পারে $.when(deferred1, deferred2, ..., deferredX)
তবে এটি অজানা যে আমি যে সমস্যার সমাধান করতে চাইছি সেখানে কতটি ডিফার্ড অবজেক্ট কার্যকর হবে।
$.when.apply
সব সময়ে একই ফলাফল পেতে।