我需要處理相當大數量的條目(數萬個),其功能如async.each
或async.eachSeries
或async.whilst
。在`async`中實現了一個非遞歸功能嗎?
幾乎還原劑說,我有使用async
因爲我打算爲每個條目調用一些查詢,使代碼異步。
不幸的是,使用async
的函數,調用堆棧消耗得相當快,導致RangeError: Maximum call stack size exceeded
。
有沒有辦法來調整async
以防止這個問題?迭代實現可以解決這個問題。任何替代庫,考慮到這個問題?
這裏是一個示例代碼段,顯示該問題:
異步=要求(「異步」);
a = []
for(i = 0; i < 10000000; i++) {
a[i] = i;
}
async.eachSeries(a,function(element,callback) {
console.log(element);
callback();
},function(err){
if(err){
console.log("error:",err);
}
console.log("finished.");
});
不,但通過使用自己的堆棧,通常可以重新遞歸遞歸方法。提供更多的代碼,我會提供一個答案... – spender 2014-12-05 15:50:31
這是腳本的代碼,對不起,如果它有點凌亂,它正在進行重構:http://nopaste.info/ca0c118591.html – fstab 2014-12-05 15:54:29