来自teplate的Node.js异步调用

来自teplate的Node.js异步调用,node.js,asynchronous,Node.js,Asynchronous,我刚从node.js开始,这个问题肯定有一个明确的答案,但我无法做到 让我们使用以下单一方法创建一个名为俱乐部的模型: club.getStaff = function(callback) { client.sinter('club-staff:'+club.id, callback); }; 到目前为止,我通过回调来管理应用程序流,但现在我被困在模板中。如何呈现异步调用?我想反复浏览工作人员,并将其打印出来 我想我可以在render之前调用这个方法,实际上是在它的回调中调用rende

我刚从node.js开始,这个问题肯定有一个明确的答案,但我无法做到

让我们使用以下单一方法创建一个名为
俱乐部
的模型:

club.getStaff = function(callback) {
    client.sinter('club-staff:'+club.id, callback);
};
到目前为止,我通过回调来管理应用程序流,但现在我被困在模板中。如何呈现异步调用?我想反复浏览
工作人员
,并将其打印出来


我想我可以在render之前调用这个方法,实际上是在它的回调中调用render。这感觉有点不对。如果不需要调用该方法,则会浪费资源(因为模板中存在if)。此外,对于引入的每个新(异步)变量,呈现包装器都会增长。

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

相反,您必须从控制器调用异步函数,当它返回时,将数据传递给模板

假设是:

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

对于大多数模板引擎,您无法从模板调用异步函数

相反,您必须从控制器调用异步函数,当它返回时,将数据传递给模板

假设是:

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

在节点中可以用于异步模板。

在节点中可以用于异步模板。

使用原型模型。Club.prototype.getStaff=有趣。。。原型在对象创建时不是“实例化”的,但如果被调用则可用。@FlavorScape抱歉,我看不出这将如何解决它。问题是在模板中调用
club.getStaff
需要异步处理,并且不会返回我想要迭代的值。原型链不会让它“阻塞”,是吗?你使用的是什么框架?Express?@josh3736是的,对,
Express
+
jade
。没有,但是你表达了对不必要的内存使用的担忧,这是我试图解决的唯一担忧。使用原型模型。Club.prototype.getStaff=有趣。。。原型在对象创建时不是“实例化”的,但如果被调用则可用。@FlavorScape抱歉,我看不出这将如何解决它。问题是在模板中调用
club.getStaff
需要异步处理,并且不会返回我想要迭代的值。原型链不会让它“阻塞”,是吗?你使用的是什么框架?Express?@josh3736是的,对,
Express
+
jade
。不,但是你表达了对不必要的内存使用的担忧,这是我试图解决的唯一担忧。哦,这感觉很不愉快。不过谢谢你,最后我至少会对这个解决方案感到满意,因为我知道这是唯一的办法。哦,那感觉很不舒服。不过谢谢你,最后我至少会对这个解决方案感到满意,因为我知道这是唯一的办法。