0

我有这个功能:

_get(url, param, function(err, body, res) {
  /* do something */
});

我需要多次执行此函数,param每次迭代采用不同的值。param来自一个数组)

因此,我决定按照文档中的说明尝试使用async.map以下定义:

地图(arr,迭代器,[回调])

哪里iterator需要这样的东西iterator(item, callback) 所以,此刻我看到我的功能不兼容,所以为此我试图解决

var fn = function(param, callback) {
  return _get(url, param, callback);
};

当我执行时,async.map我希望得到这样的合并结果

async.map(scope, fn, function(err, results) {
  /* handle results */
});

results回报undefined。我怀疑是因为return里面fn误导了async.map

我应该在这里更改/更正什么?

4

1 回答 1

1

return不会对async.map. 我认为问题在于回调的签名。假设scope你有你的param值的数组,下面应该在这些值上运行你的函数并提供一个数组results- 假设_get调用它的匿名回调没有错误:

async.map(scope, function(param, cb) {

   _get(url, param, function(err, body, res) {
       if (err) return cb(err);
       /* do something */
       cb(null, /* whatever you want to pass on to final callback */);
   })
},
function(err, result) {
   if (err) // handle err

   // result is array of values from _get's callback
})
于 2015-09-17T23:05:06.460 回答