【发布时间】:2013-12-11 23:00:13
【问题描述】:
我正在学习节点。我有一个通过bitcoin 包与bitcoind 连接的Web 应用程序,以及通过knex 与PostgreSQL 连接的Web 应用程序。我需要从每个模块中获取一些数据,然后将其全部传递给我的视图进行渲染。到目前为止,我的代码如下所示:
exports.index = function(req, res){
var testnet='';
bitcoin.getInfo(function(e, info){
if(e){ return console.log(e);}
if(info.testnet){
testnet='bitcoin RPC is testnet';
}else{
testnet='nope.. you must be crazy';
}
var c=knex('config').select().then(function(k){
res.render('index', { title: k[0].site_name, testnet: testnet });
});
});
};
虽然这种结构的方式是,它会首先等待比特币回复,然后它会向 PostgreSQL 发出请求,然后再等待一段时间让它回复。这两个等待期显然可以同时发生。但是,我不知道如何使用 Javascript 中的承诺/回调来做到这一点。我怎样才能让它异步发生,而不是串行发生?
【问题讨论】:
-
您对 Postgre 的请求是否依赖于比特币的响应?
-
@r3mus 并非总是如此。有时可以并行
-
如果不是,那么乔的答案绝对是要走的路。如果它确实回复了响应,那么您将无法运行这些异步。
标签: javascript node.js asynchronous promise