我有以下功能:
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
});
无论如何,您应该在Google上进行异步编程,回调,回调地狱,promise等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句