Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
回调函数无法正常工作node.js_Node.js_Callback_Electron - Fatal编程技术网

回调函数无法正常工作node.js

回调函数无法正常工作node.js,node.js,callback,electron,Node.js,Callback,Electron,我正在尝试使用node.js构建登录系统,我陷入了这个回调函数错误,我已经设法构建了获取登录信息并使用数据库检查它们,但当我验证密码时需要一些时间,所以在那里我需要使用回调函数,但即使我使用回调函数,它也会给我相同的错误,这是因为验证或数据库调用需要时间,在我的情况下,如果条件允许,它将执行中的其他内容。 我尝试用另一种方式实现它,只是尝试console.log order,所有的执行都与我的结果相反 这是它运行的顺序 3 2. 未定义 1 但我需要完全相反地运行它,我应该使用承诺而不是回调吗

我正在尝试使用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(函数不返回任何内容()
    outputs
    undefined
    很抱歉询问,但我应该将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;
            }
        }
    }