我有这个功能:
_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 */
});
但results
会返回undefined
。我怀疑是因为return
内fn
误导了async.map
。
我应该在这里更改/更正?
答案 0 :(得分: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
})