res.render 为什么在传参前就先执行了?
发布于 7 年前 作者 Owisky 2431 次浏览 来自 问答

在路由模块里,分别执行了几个函数,console.log 之后发现res.render 方法中并没有获取到 res.locals 中 A B C 的值,但 ABC计算结果在控制台是由输出的…… 所以这是 res.render 是抢先在 fa fb fc 之前就执行了么? 有什么解决方法呢? 含泪感谢~

router.get('/main', function(req,res){
dosth //语句1:从 session中赋值给 变量 a,b,c
fa(a); //调用函数fa,传入参数a,并将计算结果A 传给 res.locals.A
fb(b); //调用函数fa,传入参数b,并将计算结果B 传给 res.locals.B
fc(c); //调用函数fa,传入参数c,并将计算结果C 传给 res.locals.C
res.render('mian')  //渲染模板 main(利用res.locals 中 A B C 的值)
});


2 回复

目前用的 async waterfall…… 还有其他优雅的办法么?

fa, fb, fc 内部对A, B, C等的操作是异步的么?

回到顶部