Promise Q examples

by Soviut

HTML

<script src="https://rawgit.com/kriskowal/q/v1/q.js"></script>

JavaScript

function startLongTask() {
    console.log('starting long task');
    var defer = Q.defer();
    setTimeout(function() {
        console.log('timer finished');
        defer.resolve('ding');
        //defer.reject('BAD OUTPUT');
    }, 2000);
    return defer.promise;
};

var longPromise = startLongTask();

longPromise.then(function(data) {
    console.log('long promise resolved', data);
}, function(reason) {
    console.log('long promise failed', reason);
});

function callSlowApi() {
    console.log('calling slow API');
    var xhr = $.ajax({
        url: '/echo/json/',
        type: 'POST',
        data: {
            json: '{"name": "Ian"}',
            delay: 4
        }
    });
    return Q(xhr);
}

var apiPromise = callSlowApi();

apiPromise.then(function(data) {
    console.log('slow API complete', data.name);
});

Q.all([longPromise, apiPromise]).then(function(data) {
    console.log('all tasks complete', data);
}, function(reason) {
    console.log('not all tasks succeeded', reason);
});