Promise

by Rajesh Sitaraman

HTML

<div id='result' />
<div class="progress">
    <div class="progress-bar" role="progressbar" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100" style="width: 10%;" id="resultbar"></div>
</div>

JavaScript

var timer;
prgValue = 10;
$('#resultbar').html('waiting…');

var promise = process();
promise.done(function (data) {
    $('#resultbar').html(data);
});
promise.progress(function () {
    $('#resultbar').html("Progressing " + prgValue + "%");
    $('#resultbar').css('width', prgValue + '%').attr('aria-valuenow', prgValue);
    prgValue += 10;
});

function process() {
    var deferred = $.Deferred();

    timer = setInterval(function () {
        deferred.notify();
    }, 1000);

    setTimeout(function () {
        clearInterval(timer);
        deferred.resolve("resolved");
    }, 10000);

    return deferred.promise();
}