Skip to content

Instantly share code, notes, and snippets.

@aaronblondeau
Created August 20, 2016 15:35
Show Gist options
  • Save aaronblondeau/37f2e46ee2e8365c7dbc954cdefeaec5 to your computer and use it in GitHub Desktop.
Save aaronblondeau/37f2e46ee2e8365c7dbc954cdefeaec5 to your computer and use it in GitHub Desktop.
Example of Promise.coroutine with a loop
var Promise = require('bluebird');
var request = require('request');
var fs = require('fs');
request_promise = Promise.promisify(request);
writeFile_promise = Promise.promisify(fs.writeFile);
Promise.coroutine(function* () {
try {
var all_widgets = [];
var next_page = 'https://s3.amazonaws.com/aaronblondeau/widgets/widgets.json';
while(next_page) {
var response = yield request_promise(next_page);
var data = JSON.parse(response.body);
all_widgets = all_widgets.concat(data.widgets);
next_page = data.next_page;
}
yield writeFile_promise('./widgets.json', JSON.stringify(all_widgets));
console.log("Done.");
}
catch(err) {
// Hey - cool a real live try-catch to handle our errors!
console.error(err);
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment