Bluebird Progress

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/bluebird/1.2.2/bluebird.js"></script>
<div class="progress">0%</div>

JavaScript

demo(function (progress) {
    $(".progress").text(progress + "%")
});

function demo(progressHandler) {
    return new Promise(function (resolve) {
        setTimeout(resolve, 1000)
    }).tap(function () {
        progressHandler(25);
    }).then(function () {
        return new Promise(function (resolve) {
            setTimeout(resolve, 2000)
        });
    }).tap(function () {
        progressHandler(50);
    }).then(function () {
        return new Promise(function (resolve) {
            setTimeout(resolve, 2000)
        });
    }).tap(function () {
        progressHandler(70);
    }).then(function () {
        return new Promise(function (resolve) {
            setTimeout(resolve, 2000)
        });
    }).tap(function () {
        progressHandler(100);
    });
}