jQuery deferred and promise

by HoffZ

HTML

<div id="output"></div>

JavaScript

function logger(txt) {
    $('#output').append(txt + '<br>');
}
       
function execution(data) {
    var dfd = $.Deferred();
    logger('start execution');

    // Simulating a process    
    setTimeout(function() {
        dfd.resolve() 
    }, 2000);
    
    return dfd.promise();
}

function executionDone() {
    logger('execution ended');
}

var promise = execution();
promise.done(executionDone);

logger('script end');

// Also possible to use jQuery $.when:
//$.when(execution()).then(executionDone);