2012-08-31 42 views
1

我剛剛開始使用node.js,這個問題肯定有明顯的答案,但我無法將其解決。來自teplate的Node.js異步調用

讓我們有一個叫做club這種單一方法模式:

club.getStaff = function(callback) { 
    client.sinter('club-staff:'+club.id, callback); 
}; 

到目前爲止,我設法通過回調應用程序流,但現在我被困在模板中。我將如何呈現異步調用?我想遍歷staff並打印出來。

我想我可以在渲染之前調用這個方法,並且實際上在它的回調函數中渲染。這感覺有點不對。如果該方法不需要被調用(因爲如果在任何模板中),則浪費資源。此外,渲染包裝會增加引入的每個新(異步)變量。

+1

使用原型模型。 Club.prototype.getStaff = fun ...原型在創建對象時沒有「實例化」,但在調用時可用。 – FlavorScape

+0

@FlavorScape對不起,我看不出如何解決它。問題是在模板中調用'club.getStaff'需要異步處理,並且不會返回我想要迭代的值。原型鏈不會讓它「阻塞」,會嗎? –

+0

你在用什麼框架?表現? – josh3736

回答

1

對於大多數模板引擎,您不能從模板調用異步函數。

相反,您必須從控制器調用異步函數,並在返回時將數據傳遞給模板。

假設快遞:

app.get('/route/', function(req, res) { 
    club.getStaff(function(data) { 
     res.render('template', data); 
    }); 
}); 
+0

哦,那感覺不愉快。不過謝謝你,最後我會至少知道這個解決方案,知道這是唯一的方法。 –

0

在節點可以使用nai爲異步模板。