Как вернуть true или false из метода onAuthStateChanged в переменную в отдельном файле - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь вернуть true или false из метода firebase onAuthStateChanged в переменную в моем файле app.js всякий раз, когда пользователь выполняет вход или выход.У меня есть настройка класса для представления объекта Firebase Auth и метода внутри с именем checkUserStatus (), который вызывает метод onAuthStateChanged, как показано ниже.Я проверил, что этот метод правильно проверяет, вошел ли пользователь с консольными журналами в методе checkUserStatus.Как и сейчас, моя переменная userStatus в app.js всегда возвращает false (даже если пользователь вошел в систему) и регистрирует ее только один раз - я предполагаю, потому что я вызываю метод checkUserStatus только один раз вapp.js.Я не знаю, как структурировать код, поэтому я получаю значение true или false в моей переменной app.js каждый раз, когда срабатывает onAuthStateChanged.

     Class Auth {

          checkUserStatus(){
            let status = false;
            auth.onAuthStateChanged(user => {
                if (user){
                    console.log('logged in user:', user.email);
                    status = true;
                } else {
                    console.log('user is logged out');
                }
              });
              return status;
          }
        }

// beginning of app.js
let userStatus;

userStatus = auth.checkUserStatus();
console.log(userStatus);

1 Ответ

1 голос
/ 14 мая 2019

То, что вы пытаетесь сделать, это не то, как работают слушатели.Если вам нужна немедленная проверка, чтобы убедиться, что пользователь вошел в систему, просто посмотрите на auth.currentUser.Он выдаст вам текущего зарегистрированного пользователя или ноль, если его нет.

Обратный вызов слушателя / наблюдателя, который вы передадите onAuthStateChanged , предназначен для реагирования на изменения в статусе входа пользователя.без необходимости проверять, используя auth.currentUser.Это не для немедленных проверок, которые вы используете сейчас.

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