Javascript 异步函数调用中作为参数的循环变量
我有一个如下形式的对象Javascript 异步函数调用中作为参数的循环变量,javascript,asynchronous,foreach,async.js,Javascript,Asynchronous,Foreach,Async.js,我有一个如下形式的对象 sortedFilters: { task:{...}, appointment:{...}, email:{...} } 现在我想使用for in循环,为async.parallel构建任务数组,其中包含要异步执行的函数: var tasks = []; for (var entity in sortedFilters) { tasks.push(function(callback) { var entityResult =
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);
});
}
问题是,在调用函数时,实体
指向循环的最后一个值(在这种情况下,它将是电子邮件
)
如何在将函数添加到数组时确定精确值?您需要为变量创建一个范围:
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);
}
能否请您详细说明一下您最后讨论的是哪些函数,以及
sortedFilter
在多大程度上可以通过for…in
循环枚举?特别是我没有得到您的示例和async.parallel
调用之间的连接。这是在哪里发生的,又是如何发生的?