@zhodino

Как правильно переписать запрос юзера из firebase на es6 синтаксис?

Этот код работает нормально

export const fetchUser = () => {
  return (dispatch) => {
    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        var user = firebase.auth().currentUser;
        if (user) {
            console.log(user);
          } else {
            console.log('error');
        }
      } else {
        console.log('error');
      }
    });
  };
}


Но если я его перепишу вот так, то User становится равен null
export const fetchUser = () => {
  return async (dispatch) => {
    try {
      let user = await firebase.auth().onAuthStateChanged((user) => { return user });
      if(user){
        let User = await firebase.auth().currentUser;
        console.log(User);
      }
    }catch(e){
      console.log(e);
    }

  };
}

Подскажите пожалуйста где ошибка
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 1
@joniks
Вебмастер
Написали вы тут конечно жесть. Нужно учить матчасть - async/await синтаксис используют с промисами, вы же пытаетесь его впихнуть непонятно куда и ждете какой то магии.

let user = await firebase.auth().onAuthStateChanged((user) => { return user });

посмотрите, если firebase.auth().onAuthStateChanged возвращает промис, то можно написать вот так
let user = await firebase.auth().onAuthStateChanged();

тут
let User = await firebase.auth().currentUser;
await вообще не нужен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы