Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // call this when we're done.
- var done = function(err, result) {
- console.log(result);
- };
- var EXPENSIVE_OPERATION_ON = function(data, callback) {
- callback(/*error, data, etc*/);
- };
- var arr = [1,2,3,4],
- i = -1,
- len = arr.length,
- results = [],
- eterator = function(err, result) {
- // store this reference for later.
- var callee = arguments.callee;
- if(err) {
- done(err);
- } else {
- result && results.push(result);
- ++i;
- if(i < len) {
- // release control to the event loop using setTimeout
- // this also resets the stack.
- setTimeout(function() {
- EXPENSIVE_OPERATION_ON(arr[i], callee);
- });
- } else {
- done(results);
- }
- }
- };
- eterator();
Add Comment
Please, Sign In to add comment