Subjectをデフォルト値で使用して値を出力したいとします。startWith()はSubjectを返します
startWith("def")
がこの方法です。
subject = new Rx.Subject().startWith("def value");
残念ながらstartWIth
戻りObservable
ので、私は私が最初の場所で件名を使用しています唯一の理由である、onNext()
を使用することはできません。この問題の回避策は何ですか?
Subjectをデフォルト値で使用して値を出力したいとします。startWith()はSubjectを返します
startWith("def")
がこの方法です。
subject = new Rx.Subject().startWith("def value");
残念ながらstartWIth
戻りObservable
ので、私は私が最初の場所で件名を使用しています唯一の理由である、onNext()
を使用することはできません。この問題の回避策は何ですか?
観測可能なものと対象の両方を追跡してください。私は通常次のようなことをします...
export class FooService {
private _foos: Subject<Foo> = new subject<Foo>();
public get foos: Observable<Foo> {
return this._foos.startsWith(...);
}
public emitFoo(foo: Foo) {
this._foos.next(foo);
}
}
あなたの質問は完全にはっきりしていません。あなたが他の何よりも先に "def value"を見るようにするには、@ Paceの答えを使用してください。
しかし、あなたはすべてのオブザーバーは、「最近放出される値」で始まり、そしてあなたが最初の値を発する前に、彼らが加入している場合、「DEF値」を使用し、その後、BehaviorSubject
を使用する場合:
var subject = new BehaviorSubject("default val");
subject.subscribe(...); // sees "default val", then anything you emit.
subject.next("foo");
subject.subscribe(...); // sees "foo", then anything else you emit (does not see "default val")