这是处理大量条目的代码的一部分(最初它与文件系统一起工作并对文件进行一些操作)。有什么好的方法可以绕过限制并防止抛出RangeError:超出最大调用堆栈大小(目前它允许我迭代大约 3000 个项目)
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))
问题是您正在进行许多函数调用。设置stack-size
更高的值只会增加你可以处理的项目数量,并不能解决实际问题。
您直接从函数调用下一次迭代,这使其成为递归函数。由于它正在通过,因此有点难以发现async
.
这段代码应该可以工作:
var tifPreview = function (item, callback) {
console.log(item);
// defer the callback
setImmediate(callback);
}
阅读更多关于setImmediate
函数在这里:http://nodejs.org/api/timers.html#timers_setimmediate_callback_arg http://nodejs.org/api/timers.html#timers_setimmediate_callback_arg
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)