来自teplate的Node.jsasynchronous调用

我刚刚开始使用node.js,这个问题肯定有一个明显的答案,但我不能把它closures。

让我们用这个单一的方法来build立一个叫club的模型:

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

到目前为止,我通过callback来pipe理应用程序stream,但现在我陷入了模板。 我将如何呈现asynchronous调用? 我想迭代staff并打印出来。

我想我可以在渲染之前调用这个方法,实际上是在callback中渲染。 那感觉有些不对 如果该方法不需要被调用,则浪费资源(因为如果在任何模板中)。 此外, 渲染包装将增加每个引入的新(asynchronous)variables。

对于大多数模板引擎,您不能从模板调用asynchronous函数。

相反,您必须从控制器调用asynchronous函数,并在返回时将数据传递给模板。

假设快递:

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

在节点中,您可以使用nai作为asynchronous模板。