0
我正在尝试给我们Async.js来处理项目数组。有没有一些可爱的方式来让这个工作正常?如果你比我聪明,除了由于延迟执行,http://3被打印三次。Async.js - 推迟执行,同时仍然访问正确的数组索引
var a_servers = ['http://1', 'http://2', 'http://3'];
var a_actions = [];
for (var i = 0; i < a_servers.length; i += 1)
{
var server = a_servers[i];
a_actions.push(function(callback)
{
document.write(server + '<br/>');
callback(false, server);
});
}
async.series(a_actions, function(err, a_servers)
{
document.write('processed ' + a_servers.length + ' servers<br>');
console.info(a_servers);
});
Gah,谢谢,只是想通了,回来问是否有更简单的方法。 http://jsfiddle.net/gYZhw/2/ – Langdon 2012-04-03 04:13:26
我的一般模式是定义一个定义和返回闭包的顶层函数,闭包以(关闭)作为闭包范围的一部分顶级功能。然后,它明确地将闭包范围的复杂性与循环尝试完成/构建的内容区分开来。所以你最终得到'a_actions.push(makeWriter(server));',我认为这更清晰。 – 2012-04-03 04:17:15