2014-04-01 1 views
2

각 행에 새 속성을 설정하기 위해 10k 항목이있는 배열을 처리하려고합니다.루프 10k 배열 오류가 발생했습니다. 최대 호출 스택 크기가 초과되었습니다.

RangeError: Maximum call stack size exceeded 

이 무엇인가

_async.mapLimit(collection, 100, function (row, cb){ 
     row.type = "model"; 
     cb(null, row); 
}, function (err, collection){ 
     if(err) throw(err); 
     console.log(collection); 
}); 

은 그 때 나는이 오류가? 나는 async eachSeries를 시도했지만 똑같은 일이 발생했다.

+2

는 그것이 재귀 적으로 호출 될 수 있도록'cb' 기능이 다시 루프를 호출하는 할 수 있습니다 : 당신은 단지 각 요소에 대해 수행 할 수있는 동기 처리를하는 경우

, 그냥 for 루프를 사용? –

+2

async docs에 따라 반복기 메소드에는 콜백 함수가 있습니다. https://github.com/caolan/async#mapLimit – user3175226

+2

콜백에서 비동기 작업을 수행하지 않으므로 이것을 for 대신 사용할 수 없습니다 루프를 반복하는 루프? – JohnnyHK

답변

7

async 라이브러리는 비동기 작업이 완료 될 때까지 기다리는 동안 스택을 풀 수 있도록 콜백 내에서 비동기 작업을 수행 할 것을 기대합니다.

for (var i=0; i<collection.length; ++i) { 
    collection[i].type = 'model'; 
} 
관련 문제