运行下面的代码,我只是得到“undefined”。parallel调用似乎在4个并行函数完成之前执行了最后一个函数。
function classify(filename) {
var stack = [];
var functionOne = async function(callback){
//call to an API
res = await classifierOne(filename);
callback(null, res);
}
var functionTwo = async function(callback){
//call to an API
res = await classifierTwo(filename);
callback(null, res);
}
var functionThree = async function(callback){
//call to an API
res = await classifierThree(filename);
callback(null, res);
}
var functionFour = async function(callback){
//call to an API
res = await classifierFour(filename);
callback(null, res);
}
stack.push(functionOne);
stack.push(functionTwo);
stack.push(functionThree);
stack.push(functionFour);
async.parallel(stack, function(err, res){
console.log(res[0]);
})
}
3条答案
按热度按时间biswetbf1#
如果你使用
3.x
版本的async
,我们有一个很大的变化-支持async
/await,版本,已经 Package 到Promise的任务(当你使用callback(null, value)
关键字时),那么callback
将被禁用,你需要在任务中返回值而不是调用callback(null, value)
。这意味着,要修复您的案例,代码将为:
P/s:我的建议是使用Promise.all for this case.对
callback
说不。aydmsdu92#
我不太确定
async
npm库,但在它上面看起来,当你有一个回调函数作为async
时,它不工作。如果你尝试使用原生promise,它会工作。事ecbunoof3#
你的方法就像。
functionOne
错过了返回,没有回调。下面返回["1","2","3","4"]
。