Skip to content

Instantly share code, notes, and snippets.

@owenkellogg
Created December 10, 2014 22:39
Show Gist options
  • Save owenkellogg/1025a431b9ef194a9877 to your computer and use it in GitHub Desktop.
Save owenkellogg/1025a431b9ef194a9877 to your computer and use it in GitHub Desktop.
Promise.while
var Promise = require("bluebird");
Promise.while = function(condition, action) {
var resolver = Promise.defer();
var loop = function() {
if (!condition()) return resolver.resolve();
return Promise.cast(action())
.then(loop)
.catch(resolver.reject);
};
process.nextTick(loop);
return resolver.promise;
};
var i = 0;
Promise.while(function() {
return i < 10;
}, function() {
return new Promise(function(resolve, reject) {
i++;
if (i == 10) response = 'it is done!';
resolve(response);
})
})
.then(function(response) {
assert(response == 'it is done!');
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment