nodeJs huge array processing throws RangeError: Maximum call stack size exceeded

arrays, javascript, memory-management, node.js

Solution

The problem is that you are making to many function calls. Setting the `stack-size` to a higher value will only increase the number of items you can handle, not solve the actual problem.

You are calling the next iteration straight from your function, which makes it a recursive function. It's a bit hard to spot since it's going thru `async`.

This code should work:

var tifPreview = function (item, callback) {
  console.log(item);

  // defer the callback
  setImmediate(callback);
}

Read more about the `setImmediate` function here: http://nodejs.org/api/timers.html#timers_setimmediate_callback_arg

Problem

This is part of code to proceed big number of entries ( originally its works with file system and make some operations with files) . Is there any nice way to bypass the limitation and prevent throwing of RangeError: Maximum call stack size exceeded ( As for now it allows me to iterate about 3000 items ) ``` var async = require('async') , _u = require('underscore') var tifPreview = function (item, callback) { console.log(item) return callback(); } var tifQueue = async.queue(tifPreview, 2) tifQueue.push(_u.range(0, 5000, 1)) ```

Original source