来自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模板。