如何使用具有多个参数的迭代器调用 async.map 函数?

How to invoke async.map function with an iterator with multiple arguments?

我有这个功能:

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

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

所以,我决定尝试使用 async.map,如文档中所述,定义如下:

map(arr, iterator, [callback])

其中 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 */
});

但是resultsreturnsundefined。我怀疑是因为 fn 里面的 return 误导了 async.map.

这里我应该change/correct做什么?

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
})