Может кому пригодится. Решил задачу примерно вот так:
function dispach() {
return $.Deferred(function(dispached) {
var f = function() {
$.when(function() {
return $.Deferred(function(dfd){
// ...
//do something, resolve dfd-object on complete
// ...
}).always(function(){
if(!stopped && array.length > 0) { //stopped - на случай необходимости прервать цепочку
console.log('wait 4 sec');
setTimeout(f, 4000);
} else dispached.resolve();
});
}).done(function(v) {
console.log('Done '+v);
});
} // end-f
f();
}).done(function(){
console.log('Done ALL');
});
}
На идею подтолкнул вот этот
код