回调函数无法正常工作node.js
我正在尝试使用node.js构建登录系统,我陷入了这个回调函数错误,我已经设法构建了获取登录信息并使用数据库检查它们,但当我验证密码时需要一些时间,所以在那里我需要使用回调函数,但即使我使用回调函数,它也会给我相同的错误,这是因为验证或数据库调用需要时间,在我的情况下,如果条件允许,它将执行中的其他内容。 我尝试用另一种方式实现它,只是尝试console.log order,所有的执行都与我的结果相反 这是它运行的顺序 3 2. 未定义 1 但我需要完全相反地运行它,我应该使用承诺而不是回调吗回调函数无法正常工作node.js,node.js,callback,electron,Node.js,Callback,Electron,我正在尝试使用node.js构建登录系统,我陷入了这个回调函数错误,我已经设法构建了获取登录信息并使用数据库检查它们,但当我验证密码时需要一些时间,所以在那里我需要使用回调函数,但即使我使用回调函数,它也会给我相同的错误,这是因为验证或数据库调用需要时间,在我的情况下,如果条件允许,它将执行中的其他内容。 我尝试用另一种方式实现它,只是尝试console.log order,所有的执行都与我的结果相反 这是它运行的顺序 3 2. 未定义 1 但我需要完全相反地运行它,我应该使用承诺而不是回调吗
const {ipcMain} = require('electron');
const Password = require("node-php-password");
const connection = require("./connection");
var hash;
var done;
var self = module.exports = {
getuser_information:function(user_name,pwd,callback){
connection.query("SELECT * FROM `super_admin` WHERE ad_un = ?", user_name, function(err, result, fildes) {
if (err) throw err;
let numbers_retuned = result.length;
hash = result[0].desk;
console.log(1);
});
callback(hash,self.true_or_not);
},
hashverif:function(hash,true_or_not){
true_or_not();
console.log(2);
},
true_or_not:function(){
console.log(3);
return 1
}
}
评论后更新
您有两个错误
get\u storaged\u password
函数不返回任何内容,这就是console.log(函数不返回任何内容())
输出未定义的
done
获取存储的密码
的定义回调(完成)
这就是为什么当您将
done
记录到控制台时,它是未定义的添加后正确的,它返回true,但它来自chek_if_true中的控制台日志,但我从main.js调用此函数,当我从main.js调用函数时,它返回未定义的:-(console.log(login.get_stored_密码('Thaali_Super_Admin',“password123”,login.chek_if_true))
这是main.js的调用,对于这个调用,它返回一个未定义的函数。调用回调函数时,你的get_storage_password
函数不返回任何内容,这就是console.log(函数不返回任何内容()
outputsundefined
很抱歉询问,但我应该将return放在哪里获取存储密码我有点困惑,请帮助我尝试了这个和那个也不起作用`var re=callback(done);console.log(re);if(re){return 1;}`非常感谢您的快速回复。仍然是相同的错误。它在完成其他函数之前调用其他函数。我在这里尝试。如果返回值为1/true,则用户是有效用户。如果不是,则用户无效。我将重新检查我的编码。。。。。。
const {
ipcMain
} = require('electron');
const Password = require("node-php-password");
const connection = require("./connection");
var hash;
var done;
var self = module.exports = {
get_stored_password: function(name, pwd, callback) {
connection.query("SELECT * FROM `super_admin` WHERE ad_un = ?", name, function(err, result, fildes) {
if (err) throw err;
let numbers_retuned = result.length;
hash = result[0].desk;
if (numbers_retuned == 1) {
var test = pwd;
done = Password.verify(test, hash);
} else {
console.log('no');
return 0;
}
//you must pass an argument to your callback function
// and return done var to get an output when you log this function
callback(done);
return done;
});
},
chek_if_true: function(done) {
console.log(done);
if (done) {
return true;
} else {
return false;
}
}
}