这个问题可能看起来很简单,但我在javascript方面有0经验,并且对回调函数感到困惑。
原始代码使用“async.parallel”填充了一些“async.each”。
function fillMap(listElements, elementMap, params, callBack) {
async.each(listElements, function findElement(listElement, forEachCallBack) {
async.parallel(
{
fun1: function getUniqueElement(parallelCallBack) {
params.getResponse1(parallelCallBack);
},
fun2: function getElement(parallelCallBack) {
params.getResponse2(parallelCallBack);
}
},
function fillElement(err, res) {
if (err) {
return forEachCallBack(err);
}
elementMap[listElement] = res.body;
forEachCallBack();
});
}, callBack);
}
现在我不需要async.parallel中的第一个函数,我只需要“getElement”但不需要“getUniqueElement”。我该如何从async.parallel体中删除它?而且我不需要“async.parallel”但是我不知道怎么能用“fillElement”调用“getElement”仍然收到响应体..
有什么建议吗?
谢谢!
答案 0 :(得分:0)
从async.parallel
中删除getUniqueElementfunction fillMap(listElements, elementMap, params, callBack) {
async.each(listElements, function findElement(listElement, forEachCallBack) {
async.parallel(
{
fun2: function getElement(parallelCallBack) {
params.getResponse2(parallelCallBack);
}
},
function fillElement(err, res) {
if (err) {
return forEachCallBack(err);
}
elementMap[listElement] = res.body;
forEachCallBack();
});
}, cb);
}
删除整个async.parallel块
function fillMap(listElements, elementMap, params, callBack) {
async.each(listElements, function findElement(listElement, forEachCallBack) {
var fillElement = function (err, res) {
if (err) {
return forEachCallBack(err);
}
elementMap[listElement] = res.body;
forEachCallBack();
}
var getElement = function (callback) {
params.getResponse2(callback);
};
getElement(fillElement);
}, callBack);
}
尝试通过api https://github.com/caolan/async 如有任何疑问,请随时提出。