如何在快速Nodejs中从本地范围更改全局变量值

时间:2014-12-19 12:46:47

标签: javascript node.js express

检查这段代码

            var self = this;
            var flag = true;

            UserSessionModel.setDB(req.db);
            UserSessionModel.checkIdandToken(req.headers, function(err, result) {
               if(result.length == 0){
                  console.log(flag); // prints TRUE in console
                  flag = false;
                  res.status(400).send(self.createResponse({}, {
                     success : false,
                     message : "User Id or Token is invalid"
                  }));
              }
           });

           console.log(flag); // prints TRUE in console

在最后一行,它应该是FALSE。 请指导我

1 个答案:

答案 0 :(得分:1)

就像我在评论中提到的那样,true因为" asynchronicity" - 我很确定你的checkIdandToken的第二个参数是回调函数。在运行代码之前执行console.log

基本上,您的变量已更改,但在您运行console.log

之后

This answer解释了异步代码的工作原理。