Deferred 2
by Gary Ross
HTML
<div id="log">
</div>
JavaScript
var log = function(content) {
$('<p/>').html(content).appendTo('#log');
}
function slowCount(numbers, deferred) {
if (deferred) {
this.deferred = jQuery.Deferred();
}
if (numbers.length) {
var number = numbers.shift();
log('SC:' + number);
setTimeout(function() {
//deferred.resolve(number);
doSomething(number);
slowCount(numbers);
}, 500);
return this.deferred.promise();
} else {
this.deferred.resolveWith(this, ['resolveWith']);
//this.deferred.resolve();
return;
}
}
function doSomething(number) {
setTimeout(function() {
log("DS:" + number);
}, 1000);
}
$(function() {
var go = function() {
$.when(slowCount([1, 2, 3, 4], true)).done(function(rslt) {
log("All tasks finished with " + rslt);
});
}
go();
});