0

次のコードを使用して、現在サインインしているユーザーのユーザー ID を取得するために、angularfire.auth にサブスクライブする angularfire2 で操作を実行しています。

angularfire.auth.subscribe(auth => {
      this.userId = auth.uid;
      console.log(this.userId);
  }

これは正常に機能し、uid をローカル変数 userId に割り当てます。

私が抱えている問題は、次のコードを実行したいときです:

let shipObservable = angularfire.database.list('/ships/' + this.userId);

    shipObservable.subscribe(
        value => {
            this.otherObservable = angularfire.database.list('/other/' + value[0].otherId);
            this.otherObservable.subscribe(value => {
                this.address = value[0].$value;
                this.number = value[1].$value;
                this.email = value[2].$value;
                this.name = value[3].$value;
                });
    }).catch((err) => console.log(err));

問題は、最初のオブザーバブルから uid を取得する前に、2 番目のコードが実行されることです。これらは非同期操作であり、いつでも戻ってくる可能性があることを認識しています。しかし、ユーザー ID が auth によって返された uid に割り当てられた後に、2 番目のオブザーバブルが確実に実行されるようにする方法があることを知りたいです。

4

1 に答える 1