如何在Node.js中执行IO任务序列

时间:2013-08-29 22:53:55

标签: node.js nonblocking

我对node.js感兴趣。

如果一切都是“非阻塞地”执行,它什么时候将结果刷新到客户端(浏览器),如果我想从db获取结果,发布到其他服务器,并从其他服务器返回结果get,我需要在这样的回调中放回调?

var dbquery = db.query(function(result){
    var postToServer = otherServer.post(result.id,function(networkResult){
           render(networkResult)
    })

})

或者可以“更优雅地”处理?

2 个答案:

答案 0 :(得分:0)

这正是承诺的目的。很少有库在JavaScript中实现它们。

https://github.com/kriszyp/node-promise http://howtonode.org/promises

这里解释得太多了,所以你必须去阅读并查看一些示例代码。

基本上你的代码看起来像这样:

query_db()
.then(function (result) { return otherServer.post(result.id); })
.then(function (networkResult) { render(networkResult); });

答案 1 :(得分:0)

使用库,例如​​https://github.com/kriskowal/q(承诺)或https://github.com/caolan/async