将函数数组传递给asynchronous并行

我必须传递一个函数数组到node.js的async.js模块。
从文档的正常方式将是:

async.parallel([ function(callback){ setTimeout(function(){ callback(null, 'one'); }, 200); }, function(callback){ setTimeout(function(){ callback(null, 'two'); }, 100); }, ], // optional callback function(err, results){ }); 

我试过这样的:

  for(var i = 0; i < jsonData.length; i++) { ... o.url = serviceurl; o.title = jsonData[i]; var ff = function(callback){ obj.loadService(o.title,o.url,callback); } callItems.push(ff(function(){return true;})); } async.parallel( callItems, // optional callback function(err, results){ console.log('all calls called without any errors'); }); 

但是主要的callback没有被调用。
所以我不能说如果所有的并行调用完成。

我在这里错过了什么?

看起来闭环在for循环中是不正确的。 尝试一个外部函数,返回当前分配给ff的值。 例:

 for(var i = 0; i < jsonData.length; i++) { ... o.url = serviceurl; o.title = jsonData[i]; var ff = makeCallbackFunc(obj, o.title, o.url); callItems.push(ff(function () {return true;})); } function makeCallbackFunc(obj, title, url) { return function (callback) { obj.loadService(title, url, callback); }; } 

我对你添加到callitems中的内容有点困惑 – 也就是用函数参数调用ff的结果 – 它不会是callback函数,它会立即执行。