2013-08-29 25 views
0

我剛剛對node.js感興趣。如何在Node.js中執行IO任務的序列

如果一切都以非阻塞方式執行,它什麼時候將結果刷新到客戶端(瀏覽器),如果我想從db獲取結果,發佈到其他服務器,並返回從其他服務器獲得的結果,我是否需要在這樣的回調中放置回調?

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

}) 

或者可以處理「更優雅」嗎?

+0

我更喜歡使用回調函數,因爲同步任務有時會凍結瀏覽器。 –

+0

注意:在標題中使用或重複標籤[應避免](http://stackoverflow.com/help/tagging),這就是爲什麼[Andy G編輯](http://stackoverflow.com/posts/18522229/)修訂版)將其刪除。 –

+0

_「你的標題中唯一應該使用標籤的時候就是它們與標題的會話語氣有機聯繫在一起,_這正是這種情況。 – cababunga

回答

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