Q Promises
by John Allan
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/0.9.2/q.js"></script>
JavaScript
var d;
function do1 () {
console.log('do1 says: ', 'go');
return Q.fcall(function () {
//Error:
//throw new Error('do1 failed');
//Success:
return 'do1 passed this message';
});
}
function do2 (msg) {
console.log('do2 says: ', msg);
return Q.fcall(function () {
return 'update from do2';
});
}
var do3Message = 'do3 passed this message'
function do3 (msg) {
console.log('do3 says: ' + msg);
return Q.fcall(function () {
return do3Message;
});
}
function do3Error (msg) {
console.log('do3Error says:', msg);
}
function do4(msg) {
console.log('do4 says: ' + msg);
return Q.fcall(function () {
return false;
});
}
function doAsync () {
var d = Q.defer();
console.log('doAsync says: ', 'call async')
setTimeout(function () {
d.resolve('async complete');
}, 700);
return d.promise;
}
function success (msg) {
console.log('success says: ' , msg);
}
function error (err) {
console.log('error says: ' , err);
}
do1().then(do2('passed')).then(do3, do3Error).then(do4).then(doAsync).then(success, error).done();