2013-11-26 116 views
0

我有一个具有以下形式的对象。循环变量作为异步函数调用中的参数

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

现在我想用一个for-in循环,打造我的任务阵列async.parallel,其中所包含的功能异步执行:

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); 
}