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

时间:2014-07-31 10:50:54

标签: javascript global-variables asynccallback

我有以下功能:

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块内的值。有任何建议如何解决这个问题?

MERCI

1 个答案:

答案 0 :(得分:0)

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
});

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