Observable
へのサブスクリプションを作成する必要がありますが、最初に呼び出されたときにすぐに破棄されます。
次のようなものがありますか?
observable.subscribeOnce(func);
私のユースケースでは、エクスプレスルートハンドラーでサブスクリプションを作成しており、サブスクリプションはリクエストごとに複数回呼び出されています。
RxJSには、これまで出会った中で最高のドキュメントがあります。以下のリンクをたどると、非常に役立つ表を使用して、ユースケースを演算子にマッピングできます。たとえば、「最初の値を取得したい」ユースケースには、3つの演算子first
、firstOrDefault
、およびsample
があります。
オブザーバブルシーケンスが通知なしで完了した場合、first
演算子はサブスクライバーにデフォルト値を提供し、firstOrDefault
演算子はエラーをサブスクライバーに通知します。
@ Brandonの答え を補完するために、BehaviorSubject
に基づいてObservable
を更新するには、first()
などを使用することも不可欠です。例(未テスト):
var subject = new BehaviorSubject({1:'Apple',2:'banana'});
var observable = subject.asObservable();
observable
.pipe(
first(), // <-- Ensures no stack overflow
flatMap(function(obj) {
obj[3] = 'pear';
return of(obj);
})
)
.subscribe(function(obj) {
subject.next(obj);
});