SO - 24931115
JavaScript
var arr = [syncFunction, returnsPromiseAsync, syncFunc2, returnsPromiseAsync];
clearQueue(arr).then(function() {
console.log("All done");
});
console.log("After, but sync!");
function clearQueue(q) {
var p = $.Deferred();
setTimeout(p.resolve.bind(p), 0);
return q.reduce(function(prev,cur){
return prev.then(cur);
}, p);
}
function syncFunction(){
console.log("Hello World 1");
}
function returnsPromiseAsync(){
var d = $.Deferred();
setTimeout(function(){ console.log("2"); d.resolve(""); },1000);
return d.promise();
}
function syncFunc2(){
console.log("Hello World 3");
}