我目前有这样的代码
function userExists(userID) {
connection.query(query, function(error, results, fields) {
if(results.length > 0) {
return true;
}
return false;
});
}
我的意图是如果找到结果则返回true,如果没有则返回false。由于返回函数内部的函数,这不起作用,我将如何修复此问题,因此我仍然可以if(userExists(id)) { code }
答案 0 :(得分:2)
您将需要使用Promise或回调函数。以下是如何使用promise实现该函数的示例:
function userExists(userID) {
return new Promise(function(resolve, reject) {
connection.query(query, function(error, results, fields) {
resolve(results.length > 0);
});
}
}
userExists(1).then(function(result) {
// Here result will be either true or false.
}
如果您正在运行节点,则可能可以使用ES6语法,因此您也可以编写
const userExists = userID => new Promise((resolve, reject) => {
connection.query(query, (error, results, fields) => {
resolve(results.length > 0);
});
});
userExists(1).then(result => {
console.log(result);
});
编辑:
如果由于某些原因需要使用回调函数来实现这一点,那么你将如何做到这一点。尽管使用Promise是优选的。
const userExists = (id, callback) => {
connection.query(query, (error, results, fields) => {
callback(results.length > 0);
});
}
userExists(1, result => {
console.log(result);
});