With closure

by _abl

JavaScript

for (i=0;i<4;i++) {
    var promise = doTimeout();
    
    (function(){
        var myIndex = i;
        promise.then(function() {
            log("Card saved:" + myIndex);
        }, function(error) {
            log("Uh oh, something went wrong.");
        });
    })();
}

function doTimeout(){
    var def = $.Deferred();
    setTimeout(def.resolve, 200);
    return def.promise();
}

function log(text){
    $("<p/>").append(text).appendTo("body");
}