我想知道处理一个偶数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一起传递流媒体行? 所以我正在寻找一种最佳实践方式......节点方式......
感谢您的帮助。
答案 0 :(得分:0)
在代码示例中,您提供的getAllCustomers()
将被阻止,只有当connection.execute(query)
被阻止时 - 似乎是这种情况,否则如果它是异步的话 - 它会被后续关闭在它甚至有机会运行查询之前调用connection.close()
。
如果它不是同步/阻止 - 而不是你需要在done
回调