Deferred example 1

First one makes 10 AJAX requests at once that take different amounts of time

by someprimetime

JavaScript

var urls = [];

//Make a bunch of URLs, use delay= to make them take time to load.
for (var i = 0; i < 10; i++) {
    var n = Math.floor(Math.random() * 5);
    urls.push("http://jsfiddle.net/echo/jsonp/?delay=" + n + "&data=" + i);
}

//Start all of the AJAX requests at once and store their deferreds in an array.
var defs = $.map(urls, function(url, i) {
    log("Starting number " + i);
    return $.ajax({
        url: url,
        dataType: "jsonp",
        success: function() {
            log("Finished number " + i);
        }
    });
});

//Slightly tricky part because you can't just do $.when(defs)
//This basically does $.when(defs[0], defs[1], defs[2], ...)
$.when.apply($, defs).done(function() {
    log("Last one finished!");
});





function log(msg) {
    $("<div>", { text: msg }).appendTo("body");
}