Guest User

Untitled

a guest
Jul 18th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1.  
  2. // call this when we're done.
  3. var done = function(err, result) {
  4. console.log(result);
  5. };
  6.  
  7. var EXPENSIVE_OPERATION_ON = function(data, callback) {
  8. callback(/*error, data, etc*/);
  9. };
  10.  
  11. var arr = [1,2,3,4],
  12. i = -1,
  13. len = arr.length,
  14. results = [],
  15. eterator = function(err, result) {
  16. // store this reference for later.
  17. var callee = arguments.callee;
  18. if(err) {
  19. done(err);
  20. } else {
  21. result && results.push(result);
  22. ++i;
  23. if(i < len) {
  24. // release control to the event loop using setTimeout
  25. // this also resets the stack.
  26. setTimeout(function() {
  27. EXPENSIVE_OPERATION_ON(arr[i], callee);
  28. });
  29. } else {
  30. done(results);
  31. }
  32. }
  33. };
  34.  
  35. eterator();
Add Comment
Please, Sign In to add comment