【发布时间】:2018-09-27 07:21:51
【问题描述】:
let visitor;
const role = req.user.profile;
// role will be either Admin or Manager
switch (role) {
case 'Admin':
if (req.body.verificationMode === 'online') {
visitor = {
name: req.body.name,
mode: 'online',
};
} else {
visitor = {
name: req.body.name,
mode: 'offline'
};
}
break;
case 'Manager':
Staff.findOne({
where: {
loginId: req.user.id,
},
}).then((staffData) => {
if (req.body.verificationMode === 'online') {
visitor = {
name: req.body.name,
mode: 'online',
};
} else {
visitor = {
name: req.body.name,
mode: 'offline',
};
}
});
break;
}
console.log('visitor >>> >> >> >> >>> >>>> >>>> >>>> >>> >>>> >>>', visitor);
如果我以 Admin 角色登录,则访问者的控制台具有正确的数据,但如果以 Manager 角色登录,则访问者的控制台变为 undefined .
为什么会这样?我使用的是 ES6,所以我不使用 var。
【问题讨论】:
-
如果
Manager在console.log之后执行,您有异步代码。这就是为什么在这种情况下访客是undefined。 -
@AagamJain 是对的,您的 console.log 甚至在 Staff.findOne 异步语句设置访问者变量之前就打印出来了。
-
@MohamedSameer 您代码中的
.then()在您的console.log()之后执行。所以访客还没有设置。 -
@Frost no、
const和let甚至 ES6 对异步代码绝对没有影响。
标签: javascript variables switch-statement global-variables