如何从匿名函数内部更改全局变量

How to change a global variable from the inside of a anonymous function?

本文关键字:内部 全局变量 函数      更新时间:2023-09-26

我有以下功能:

var checkExist = function(_id) {
  var t;
  car.count({
    id: _id
  }, function(err, c) {
    if (c != 0) {
        t = 0;
        console.log(t);

    } else {
        t = 1;
        console.log(t);
    }
  });
  console.log(t);
  return t;
}

问题:'t'在函数末尾是未定义的,但它改变了if/else块中的值。有什么建议如何解决这个问题吗?

谢谢

OP你需要读一些关于异步编程的东西。

长话短说。你不能让它是同步的

var checkExist = function(_id) {
    /*async blah-blah-blah*/
    return result;
};
if(checkExist(123)) {} //THIS WON'T work

你可以让你的函数接受一个回调

var asyncCheckExist = function(_id, success, error) {
     car.count({id: _id}, function(err, result) {
         if(err) return error && error(err);
         success(result);
     });           
};
asyncCheckExist(123, function(exists) {
       if(exists) {} //THIS WILL Work
});

无论如何,你应该谷歌异步编程,回调,回调地狱,承诺等