ストリーム(たとえば、StreamA
)がnull以外の値を返してから、StreamB
subscribe関数を呼び出すのを待つ方法を教えてください。私は特にStreamA
の値に興味がありません。次に、StreamB
の値をStreamAがnull以外の値を返す前に更新されている可能性があり、新しいイベントがない可能性があります。別のストリームを呼び出す前にストリームを待つ
ポーズブルを試してみましたが、これを見て:RxJS: How can I do an "if" with Observables?、残念ながらうまく動作しませんでした。これは、エクスポートされたクラスpausable
、rxjs v 5.0.0-beta.6が存在しないためです。
これは、回答ごとに私が思い付いたところです。
エクスポートクラスAuthService { userModel:FirebaseListObservable = this.af.database.list(/users
); コンストラクタ(プライベートAF:AngularFire){
var user = this.currentAuthor();
var userStream = user;
this.af.auth.flatMap((d) => { console.log(d);return this.userModel.publishReplay(1); });
this.userModel
.subscribe((data) => {
var flag = false;
data.forEach((item) => {
if (item.$key && item.$key === user.uid) {
flag = true;
return;
}
});
if (flag) {
console.log('hello');
} else {
this.userModel.push({
firstName: user.auth.displayName.substr(0, user.auth.displayName.lastIndexOf(' ')),
lastName: user.auth.displayName.substr(user.auth.displayName.lastIndexOf(' '), user.auth.displayName.length),
displayPic: user.auth.photoURL,
provider: user.provider,
uid: user.uid
}
);
}
})
}
public currentAuthor():FirebaseAuthState {
return this.af.auth.getAuth();
}
希望、私は自分自身を明確にすることができます。今でも私は混乱しています。 :p。
rxjsとリアクティブプログラミングの初心者です。そして、どんな助けもありがとう。
そして、btw、立ち寄ってくれてありがとう。 :)
私はコードを追加して、物事を少し明確にしました。 (ホープが助けてくれる)。また、上記のコードでは、TSコンパイラで次のエラーが発生しています。 'プロパティ 'publishReplay'がタイプ 'FirebaseListObservable'に存在しません。 –
ankitjain11
あなたのタイプを調べる必要があります。 'flatMapLatest'では、それが返されるobservableであることがわかります。だから、 'FirebaseListObservable'が確かに観測可能であることを確認してください。 'publishReplay'は' http:// reactx.io/rxjs/class/es6/Observable.js〜Observable.html'にありますので、Rxjs v5の一部になるはずです。 – user3743222
'flatMapLatest'はRxJS 5の' switchMap'でなければなりません – subhaze