Функция обратного вызова не работает node.js - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь построить систему входа в систему, используя node.js, и я застрял в этой функции функции обратного вызова. Мне удалось собрать информацию для входа в систему и проверить ее с помощью базы данных, но когда я проверяю пароль, это занимает некоторое время, поэтому там мне нужно использовать функцию обратного вызова, но даже я использовал функцию обратного вызова, она выдает мне ту же ошибку, которая возникает из-за того, что проверка или вызов базы данных требуют времени, она выполняет другие вещи в моем случае, если условия. я попытался реализовать это другим способом, только что попытался установить console.log, и все выполнялось напротив этого, мой результат сначала

это порядок запуска 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

}

}

1 Ответ

0 голосов
/ 08 ноября 2018

ОБНОВЛЕНИЕ после вашего комментария

У вас есть две ошибки

  1. Ваша функция get_stored_password ничего не возвращает при вызове функции обратного вызова, поэтому console.log(function_returning_nothing()) выводит undefined

  1. Вы забыли передать done функции обратного вызова в get_stored_password определение callback(done)

    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;
            }
        }
    }
    

Поэтому, когда вы регистрируете done на консоли, это undefined

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...