我使用异步模块按顺序运行函数列表,但只执行名为getBaseLineList的第一个函数。第二个没有?我希望他们一个接一个地跑。
的NodeJS
function getBaseLineList(){
var data=['a','b','c'];
console.log("Inside getBaseLineList");
return data;
}
function getBaseLineDetails(data){
console.log("After we get the list"+data);
}
var data =[];
async.series([
function(callback){
data = getBaseLineList();
},
function(callback){
getBaseLineDetails(data);
}
]);
app.listen(port, host);
console.log('App started on port ' + port);
答案 0 :(得分:1)
async.series
内的函数会收到一个callback
参数,但你永远不会调用它。 async在调用下一个函数之前等待你调用回调。
如果getBaseLineList
和getBaseLineDetails
是同步的,您可以这样做:
var data =[];
async.series([
function(callback){
data = getBaseLineList();
callback();
},
function(callback){
getBaseLineDetails(data);
callback();
}
]);
...但是如果它们是同步的,你不应该使用异步 - 你应该一个接一个地调用。
如果它们是异步的,您需要将callback
传递给它们中的每一个并让它们在完成时调用它。但是,如果没有看到实际的异步代码,我无法真正告诉你如何做到这一点。
答案 1 :(得分:0)
嗯,你可以使用async.waterfall
async.waterfall([
function(callback){
callback(null, getBaseLineList());
},
function(data, callback){
getBaseLineDetails(data);
callback();
}
], function(err, result) {
app.listen(port, host);
console.log('App started on port ' + port);
});