用async控制 数据库的查询,查询会很多 彼此之间有的有依赖关系有的没有,所以我再用的时候分了几个方法
exports.addTest=function(){
async.waterfall([
//balabala的 这里是一大堆 查询
//最后调用其他函数
add()
])
}
function add(){
async.waterfall([
function(cb) {
//一个查询
},
function(n, cb) {
var results=HasRejectedTests(n,type,origrec)//这个地方取不到 HasRejectedTests的返回值
console.log("res:"+results)
cb(null,results);
}
], function(err, results) {
console.log(results)
});
}
function HasRejectedTests(){
async.series([
//又是一大推查询
],function(err, results) {
**想在这里返回数据 但是不能返回**
}))
}
大概就是这样的结构, 我想在HasRejectedTests 中返回一个值给add(), 但是返回的是空,不知道怎么搞,懂的前辈 给讲解讲解呗
10 回复
@alsotang 看起来不错,稍后再去仔细看看,那,就async而言 在async的方法最后的function(err,results){}中 是可以直接console.log()出值的,但是为什么不能return 一个值呢? 有没有方法解决下的?
异步编程,用Callback啊 function HasRejectedTests(callback){ async.series([ //又是一大推查询 ],function(err, results) { 想在这里返回数据 但是不能返回 ** callback(results);** })) }
@Icego 诶,三五个查询用这个解决当然不错。我这里一个功能十几二十个查询 用这个来写在一个方法里面 太过于拥挤了。 而且 这些、 sql查询里面很多是没有依赖关系的 但是又有一些有依赖关系, 所以我才把他们分开来写。待会再去琢磨琢磨