2014-03-04 179 views
1

我正在嘗試在NodeJS環境中的MongoDB集合中找到文檔。有什麼辦法可以做到以下幾點?非阻塞MongoDB + NodeJS

這不是工作:

var foo = function (id) { 
    // find document 
    var document = database.find(id); 
    // do whatever with the document 
    ... 
} 

通過這種方式創建一個塊:

var foo = function (id) { 
    // find document 
    var document = database.find(id); 
    while (!database.find.done) { 
     //wait 
    } 
    // do whatever with the document 
    ... 
} 

我想要做什麼:

var foo = function (id) { 
    // find document 
    var document = database.find(id); 
    // pause out of execution flow 
    // continue after find is finished 
    // do whatever with the document 
    ... 
} 

我知道我可以使用一個回調,但在NodeJS/JavaScript中有沒有更簡單的「暫停」然後「繼續」的方法?對不起,我對web開發還很陌生。

回答

1

這是不可能的。如果您擔心回調的可讀性,可以考慮使用編譯爲JavaScript的語言。 LiveScript例如有所謂的「Backcalls」,他們使代碼顯示爲暫停,但編譯爲一個回調函數:

例如:

result <- mongodb.find id 
console.log result 

編譯爲:

mongodb.find(id, function(result){ 
    return console.log(result); 
}); 
+0

這我想的。 :(感謝您告訴我有關LiveScript的信息! – user2702669