Возвращение наблюдаемого из базы огня - PullRequest
0 голосов
/ 06 декабря 2018

Как, черт возьми, вы возвращаете наблюдаемую (бывшего типа пользователя) из функции при смене в firebase.Обычно вы можете просто сделать .then, но эта функция находится внутри .on, поэтому я понятия не имею, как получить оттуда наблюдаемое.

Примечание: я могу просто установить (that.user);для моей наблюдаемой внутри, но тогда моя наблюдаемая будет нулевой, когда мое приложение запустится.Так что в идеале вы должны установить свою наблюдаемость равной приведенным ниже методам return

 this.fire.database().ref('users/' + firebaseUser.uid)
       .on('value', function (snapshot) {
          if (snapshot.val()) {
            that.user = snapshot.val();
            return of(that.user);
          }
        });

1 Ответ

0 голосов
/ 06 декабря 2018

Нельзя просто вернуть значение для метода, как сказал Дуг Стивенсон.Что вы действительно хотите сделать, это использовать обратные вызовы.Например:

public interface ResultsListener{

  public void onResult(User user);
  public void onFailed();

}


public void makeFirebaseCall(ResultsListener listener) {
    this.fire.database().ref('users/' + firebaseUser.uid)
           .on('value', function (snapshot) {
              if (snapshot.val()) {
                that.user = snapshot.val();
                listener.onResult(that.user);
              }
            });
}

И когда вы делаете вызов функции makeFirebaseCall (), вы можете просто сделать следующее:

makeFirebaseCall(new ResultsListener() {
    @override
    void onResult(User user) {
        // do something with user
    }

    @override
    void onFailed() {
        // something failed
    }

});

Надеюсь, это поможет!

...