Ny deffered test
by Bjolja
HTML
<span id="output"></span>
JavaScript
$(function () {
var def = $.Deferred();
var promise = def.promise();
promise = promise.then(function () {
return promiseWithParameters(call1, [1, 2])
}).then(onSuccess);
promise = promise.then(call2).then(onSuccess);
promise = promise.then(function () {
return promiseWithParameters(call3, [1, 2])
}).then(onSuccess);
promise = promise.then(call4);
promise.done(function () {
writeOutout("Done");
});
promise.done(function(){
writeOutout('Done 2');
});
def.resolve();
});
function call1(parameters) {
var def = $.Deferred();
window.setTimeout(function () {
writeOutout("Runing after 1 second");
def.resolve();
}, 1000);
return def;
}
function call2() {
var def = $.Deferred();
window.setTimeout(function () {
writeOutout("Runing after 2 seconds");
def.resolve();
}, 1000);
return def;
}
function call3() {
writeOutout("Test no deferred");
}
function call4() {
var def = $.Deferred();
window.setTimeout(function () {
writeOutout("Runing after 4 seconds");
def.resolve();
}, 1000);
return def;
}
function promiseWithParameters(fn, parameters) {
var def = $.Deferred();
var result = fn();
jQuery.when(result).then(function () {
def.resolve();
});
return def;
}
function onSuccess() {
writeOutout("");
}
function writeOutout(text) {
document.getElementById("output").innerHTML += text + "<br />";
}