Skip to content

Instantly share code, notes, and snippets.

@voldern
Created March 18, 2016 11:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save voldern/d05b441ca90e238ee6b4 to your computer and use it in GitHub Desktop.
Save voldern/d05b441ca90e238ee6b4 to your computer and use it in GitHub Desktop.
function createCallback(returnValue) {
return (callback) => {
setTimeout(() => {
callback(null, returnValue);
});
};
}
function createPromise(returnValue) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(returnValue);
}, 300);
});
}
// Example one
async.race([
createCallback('job1'),
createCallback('job1'),
createCallback('job1')
], (err, result) => {
console.log('Race callback', err, result);
});
Promise.race([
createPromise('job1'),
createPromise('job2'),
createPromise('job3')
]).then((result) => {
console.log('Promise race', result);
}).catch((err) => {
console.log(err);
});
// Example two
async.parallel({
job1: createCallback('job1'),
job2: createCallback('job2'),
job3: createCallback('job3')
}, (err, result) => {
console.log('Parallell callback', err, result);
});
Promise.all([
createPromise('job1'),
createPromise('job2'),
createPromise('job2')
]).then((results) => {
console.log('Parallell promise', results);
}).catch((err) => {
console.log(err);
});
// Example three
async.seq(
createCallback('job1'),
(result, callback) => {
createCallback(result + '-job2')(callback);
},
(result, callback) => {
createCallback(result + '-job3')(callback);
}
)((err, result) => {
console.log('Callback sequence', err, result);
});
createPromise('job1')
.then((result) => {
return createPromise(result + '-job2');
}).then((result) => {
return createPromise(result + '-job3');
}).then((result) => {
console.log('Promise sequence', result);
}).catch((err) => {
console.log(err);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment