nodejs中的偶数api和/或回调api

时间:2014-01-21 22:42:24

标签: javascript node.js asynchronous callback

我想知道处理一个偶数api的最佳方法是什么。我的第一个想法是把它包装成回调api,但我觉得我在这里阻塞,这不是最好的方法。

鉴于我有一个从数据库返回值的lib,它是偶数:

var connection = new Connection(config);
 var query = new Query();
 query.on('data',function(row){});
 query.on('done',function(){});

这是我的看法......

 getAllCustomer(clb){

    var connection = new Connection(config);
    var query = new Query();
    var results = [];

    query.on('data',function(row){
        results.push(row);
    });
    query.on('done',function(){

        clb(results);

    });

    connection.execute(query);
    connection.close();
 }

我想在hapijs或expressjs app中使用它

喜欢像这样使用它

 handler: function(request,reply){

    getAllCustomer(function(err,result){
        reply(result);
    });
 }

getAllCustomers()似乎阻塞,直到查询完成!  那么推荐的方法是什么呢?  设计干扰是否适合将回放api包含在回调api中?  或者我应该和expressjs / hapijs一起传递流媒体行?  所以我正在寻找一种最佳实践方式......节点方式......

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在代码示例中,您提供的getAllCustomers()将被阻止,只有当connection.execute(query)被阻止时 - 似乎是这种情况,否则如果它是异步的话 - 它会被后续关闭在它甚至有机会运行查询之前调用connection.close()。 如果它不是同步/阻止 - 而不是你需要在done回调

中隐藏回文