您可以只传递一个回调res.render
,将使用呈现的字符串调用该回调。这将完成async
,这是解决此问题的正确方法,因为渲染可能需要读取文件。
app.get('/', function(req, res){
res.render('index', { title: 'Title' }, function(err, result) {
res.render('index2', {foo: 'data'}, function (err, result2) {
console.log('Render result:');
console.log(result2);
res.send(result2); // send rendered HTML back to client
});
});
});
如果您不喜欢嵌套回调,我建议您查看一个异步库,例如 aptly names async
。您可以使用瀑布 ( https://github.com/caolan/async#waterfall ) 函数来执行此操作:
async.waterfall([
function(done) {
res.render('index', {title: 'Title'}, done);
},
function(result, done) { // result is the result of the first render
res.render( result, {foo: 'data'}, done);
}
], function (err, result) { // result is the result of the second render
console.log(result);
res.send(result);
});