我刚刚开始使用node.js,这个问题肯定有一个明显的答案,但我无法实现。
让我们用这个方法建立一个名为 club
的模型:
club.getStaff = function(callback) {
client.sinter('club-staff:'+club.id, callback);
};
到目前为止,我通过回调管理应用程序流程,但现在我陷入了模板中。我将如何呈现异步调用?我想迭代 staff
并打印它。
我想我可以在渲染之前调用这个方法,实际上在它的回调中渲染。感觉有点不对劲。如果不需要调用该方法(因为模板中存在 if 等),则会浪费资源。此外,渲染包装器会随着引入的每个新(异步)变量而增长。
最佳答案
对于大多数模板引擎,您无法从模板调用异步函数。
相反,您必须从 Controller 调用异步函数,当它返回时,将数据传递给模板。
假设 express :
app.get('/route/', function(req, res) {
club.getStaff(function(data) {
res.render('template', data);
});
});
关于来自模板的 Node.js 异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220191/