【发布时间】:2017-10-30 02:28:17
【问题描述】:
我正在学习 NodeJS,我有以下代码:
var test = '';
function test2(name,callback) {
UserData
.findOne({'token': name})
.then(function(user) {
test = user.token;
console.log('current: '+user.token);
return callback(user.token);
})
.catch(function(err) {
console.log(err);
});
}
var isAuthenticated = function(req,res,next){
test2(req.cookies.remember_me, function(user) {test=user; });
console.log('test:::: '+test);
var isLog = false;
if(req.session.user!= undefined && req.session.user===test){
isLog=true;
}
if(req.cookies.remember_me ===test){
console.log('test'+test);
isLog=true;
}
if(isLog){
return 1;
}else
{
console.log('not auth');
return -1;
}
}
结果是:
test:::: P9Ysq2oSCHy1RVyWsePxJhpEYLD81qOiIayTyiNJCnOkmllvEspwrDAW8tD9rmfJ
不授权
当前:k8LJcCty6568QpXNS3urBedlJ0MDfEYlbOqo9Q7tQi9EOyeSkyesgHHzUjBhDgZx
我知道这是因为 NodeJS 的异步特性,但是我怎样才能使测试始终与“当前”相同;
谢谢。
【问题讨论】:
-
您可以从正确缩进代码开始。到目前为止,已经有工具可以为你做这件事,没有任何理由让代码如此混乱。
标签: node.js asynccallback