Nodejs + Express + mysql回调问题

时间:2016-09-21 02:11:30

标签: node.js express callback

我在理解回调的行为方面遇到了一些麻烦。 例如,以下代码不能用作预期的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 })
    });
};

1 个答案:

答案 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
       });
    });
 }