我想製作一個node.js函數,它在調用時讀取文件並返回內容。我很難做到這一點,因爲'FS'已經完成了。因此,我的函數看起來像這樣:Node.js返回文件的結果
function render_this() {
fs.readFile('sourcefile', 'binary', function(e, content) {
if(e) throw e;
// I have the content here, but how do I tell people?
});
return /* oh no I can't access the contents! */;
};
我知道,有可能是一個辦法做到這一點使用非事件觸發IO,但我更喜歡一個答案,讓我對事件觸發功能等這麼如果我遇到需要做同樣事情的情況,而不是IO,我不會再被卡住。我知道這打破了「一切都是平衡」的想法,我不打算經常使用它。但是,有時候我需要一個實用的函數來動態地呈現haml模板或其他東西。
最後,我知道我可以在早期調用fs.readFile並緩存結果,但這樣做不起作用,因爲在這種情況下'sourcefile'可能會隨時更改。
我寧願不用回調來做這件事。在這種情況下,我試圖編寫一個呈現haml模板的函數。在生產服務器上,它應該在服務器statup上緩存模板並在調用時渲染它,但在開發服務器上它應該讀取每次調用的文件以防萬一它改變了。因此,我想要一個讀取文件的開發函數,但假設它沒有。回調改變了我的功能的類型簽名,這使得切換到生產模式變得非常困難。 – So8res 2010-10-07 01:41:28