如何使用具有多个参数的迭代器调用 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 */
});
但是results
returnsundefined
。我怀疑是因为 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
})
我有这个功能:
_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
returnsundefined
。我怀疑是因为 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
})