Node.js来自模板的异步调用

时间:2012-08-31 17:43:42

标签: node.js asynchronous

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

让我们使用这个方法有一个名为club的模型:

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

到目前为止,我通过回调管理了应用程序流程,但现在我被困在模板中。我如何呈现异步调用?我想迭代staff并打印出来。

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

2 个答案:

答案 0 :(得分:1)

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

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

假设快递:

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

答案 1 :(得分:0)

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