如何从匿名函数内部更改全局变量
How to change a global variable from the inside of a anonymous function?
我有以下功能:
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
});
无论如何,你应该谷歌异步编程,回调,回调地狱,承诺等
相关文章:
- 匿名自执行js函数内部的全局变量在外部仍然可用
- 更改函数内部的全局变量而不调用它
- angular/javascript无法识别函数内部的全局变量
- 如何修改函数内部的全局变量
- 在CrossRider内部创建的全局变量's的appAPI.ready()函数对页面不可用
- 函数内部的JavaScript全局变量定义
- 函数内部的JavaScript延迟,没有全局变量
- 为什么全局变量没有't似乎受到内部作用域(Javascript)的影响
- 对函数内部的全局变量所做的更改是否全局反映?Javascript
- 如何更改函数内部全局变量的值
- jquery更改函数内部的全局变量
- 如何从函数节点内部使变量全局.js
- 从函数内部声明一个全局变量
- 为什么没有识别全局变量(内部函数)
- jQuery在函数AJAX函数内部的全局变量有问题
- Javascript全局变量未进入函数内部
- 如何从函数内部声明全局变量
- JavaScript全局变量在函数内部变为未定义
- 为什么定义在函数内部的x在我没有声明它为变量的情况下变成了一个全局变量?
- 如何从匿名函数内部更改全局变量