我有以下功能:
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
答案 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
});
无论如何你应该谷歌进行异步编程,回调,回调地狱,承诺等。