2012-08-31 39 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为异步模板。