Skip to content

Instantly share code, notes, and snippets.

@ebraminio
Last active December 27, 2015 09:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ebraminio/515856764c30d12a9f6f to your computer and use it in GitHub Desktop.
Save ebraminio/515856764c30d12a9f6f to your computer and use it in GitHub Desktop.
async job queue
// ES6
[1, 2, 3]
.map(x => () => new Promise((resolve, reject) => { console.log(x); setTimeout(resolve, 1000); }))
.reduce((promise, next) => promise.then(next), Promise.resolve())
.then(() => console.log('Async Job Queue done'));
// jQuery
[1, 2, 3].map(function (val) {
return function () {
console.log(val);
var defer = $.Deferred();
setTimeout(defer.resolve, 1000);
return defer;
};
}).reduce(function (defer, job) {
return defer.then(job);
}, $.Deferred().resolve()).then(function () { console.log('Async Job Queue done'); });
// Q
[1, 2, 3].map(function (val) {
return function () {
console.log(val);
var defer = Q.defer();
setTimeout(defer.resolve, 1000);
return defer.promise;
};
}).reduce(function (defer, job) {
return defer.then(job);
}, Q()).then(function () { console.log('Async Job Queue done'); });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment