$.when() with Arrays

by shelbyz

HTML

<span id="1"></span><br/>
<span id="2"></span><br/>
<span id="3"></span><br/>
<span id="all"></span>

JavaScript

var def1 = $.Deferred();
var def2 = $.Deferred();
var def3 = $.Deferred();

var arr = [];
arr.push(def1);
arr.push(def2);
arr.push(def3);

def1.done(function() {
    $("#1").text("def1 done");
});

def2.done(function() {
    $("#2").text("def2 done");
});

def3.done(function() {
    $("#3").text("def3 done");
});

$.when.apply(null, arr).done(function() {
    $("#all").text("all done");
});

window.setTimeout(function() {
    def1.resolve();
}, 5000);

window.setTimeout(function() {
    def2.resolve();
}, 10000);

window.setTimeout(function() {
    def3.resolve();
}, 20000);