我在理解回调的行为方面遇到了一些麻烦。 例如,以下代码不能用作预期的cos回调。 我尝试了异步库但没有获得所需的行为。
module.exports.list = function ( req, res ) {
model.list( id, idx, function( boo ){
async.forEachOf( boo, function ( b, k, e ) {
model.sublist( b.text, function( foo ) {
b.foo = foo;
})
})
res.json({ data : boo }) //boo dont have foo porperty
});
};
model.list = execute some big mysql query, and return rows (boo is an array).
model.sublist = same as model.list
编辑解决方案:
module.exports.list = function ( req, res ) {
model.list( id, idx, function( boo ){
async.forEachOf( boo, function ( b, k, e ) {
model.sublist( b.text, function( foo ) {
b.foo = foo;
e();
})
})
res.json({ data : boo })
});
};
答案 0 :(得分:2)
应仅在第二次回调中调用响应。 read async documentation
module.exports.list = function ( req, res ) {
model.list( id, idx, function( boo ){
async.forEachOf( boo, function ( b, k, e ) {
model.sublist( b.text, function( foo ) {
b.foo = foo;
});
e();
},function(){
res.json({ data : boo }) //boo dont have foo porperty
});
});
}