Deferred tesing

by Bjolja

JavaScript

function executeDeffered() {
    var ongoing = [];
    var deff = $.Deferred();
    var defprom = deff.promise();
    defprom = defprom.then(function () {
        var subDeff = $.Deferred();
        setTimeout(function () {
            console.log('Detta sker efter 3 sekunder');
            subDeff.reject(5);
        }, 3000);
        return subDeff;
    });

    defprom = defprom.then(function (result) {
        return result * 3;
    });

    deff.resolve();
    return defprom;
}

$(function () {
    var ongoing = [];
    ongoing.push((function () {
        var deff = $.Deferred();
        setTimeout(function () {
            console.log('Detta sker efter 3 sekunder');
            deff.reject(5);
        }, 3000);

        return deff;
    })());

    ongoing.push((function () {
        var deff = $.Deferred();
        setTimeout(function () {
            console.log('Detta sker efter 5 sekunder');
            deff.resolve(5);
        }, 5000);

        return deff;
    })());

    $.when.apply($, ongoing).always(function (result) {
        console.log('Klar');
        console.log(result);
    });
});