2013-11-26 2 views
0

다음 형식의 개체가 있습니다.비동기 함수 호출에서 매개 변수로 루프 변수

sortedFilters: 
    { 
    task:{...}, 
    appointment:{...}, 
    email:{...} 
    } 

지금 내가 비동기 적으로 실행되는 기능을 포함 async.parallel 내 작업의 배열을 구축하는 for-in 루프를 사용하려면 :

var tasks = []; 
for (var entity in sortedFilters) { 
    tasks.push(function(callback) { 
    var entityResult = fetchRecordsForEntity(entity, businessUnits, sortedFilters); 
    var formattedEntityResults = formatResults(entity, entityResult); 
    callback(null, formattedEntityResults); 
    }); 
} 
문제가

, 그 순간에 기능을 가 호출되면 entity은 루프의 마지막 값을 가리 킵니다 (이 경우 email).

함수가 배열에 추가되는 순간에 정확한 값을 어떻게 얻을 수 있습니까?

+0

당신이 말에 대해 이야기하고,에 기능하는 조금 더 자세히 설명해 수있는 방법까지'sortedFilters'에 의해 열거 'for ... in' 루프? 특히 나는 당신의 샘플과 async.parallel 호출 사이의 연결을 얻지 못한다. 이것이 어디서 어떻게 발생합니까? –

답변

0

당신은 변수의 범위을 만들 해야합니다

var tasks = []; 
for (var en in sortedFilters) { 
    (function(entity) { 
    tasks.push(function(callback) { 
     var entityResult = fetchRecordsForEntity(entity, businessUnits, sortedFilters); 
     var formattedEntityResults = formatResults(entity, entityResult); 
     callback(null, formattedEntityResults); 
    }); 
    })(en); 
}