0

我经常发现自己编写函数来处理一系列项目:

  • 一个异步函数并行运行多次,每个函数使用数组的不同项作为其参数
  • 所有功能完成后触发的计数器

例如:

function getThings(callback){
  thingsLeftToCheck = things.length;
  things.forEach(function(thing){
    thing.refresh(function(){
      thingsLeftToCheck--;
      if ( ! thingsLeftToCheck ) {
        callback();
      }
    });
  })
}

我经常将Caolan 的异步库用于其他工作流样式的任务,但我似乎找不到与此工作流对应的东西。例如,async.parallel 是关于并行运行许多不同的函数,而我想要的是使用不同的参数运行相同的函数:

async 是否提供类似的东西?

4

1 回答 1

0

实际上它看起来像async.each 就是这样做的。快速演示(使用超时)

var items = ['one','two']
var results = []
var doStuff = function(item, callback){
  setTimeout(function(){
    results.push('result'+item)
    callback(null)
  })
}

将返回:

[ 'resultone', 'resulttwo' ]
于 2013-09-02T10:13:19.090 回答