share()
演算子がBehaviorSubjectに適用されます。 BehaviorSubjectには初期値があります。BehaviorSubjectの初期値がshare()で動作しない
目標は、単一の共有サブスクリプションを作成することです。 しかし、BehaviorSubjectが初期値を持つ場合、この共有サブスクリプションは機能していないようです。
予期しない結果が得られました。
、以下に示すコード:
let subject = new Rx.BehaviorSubject(0);
let published = subject
.do(v => console.log("side effect"))
.share();
published.subscribe((v) => console.log(v+" sub1"));
published.subscribe((v) => console.log(v+" sub2"));
subject.next(1);
結果:
"side effect"
"0 sub1"
"side effect"
"1 sub1"
"1 sub2"
期待される結果:
"side effect"
"0 sub1"
"1 sub1" <------------- this is missing from actual result
"side effect"
"1 sub1"
"1 sub2"
だから、どのように我々は「副作用」、「0 SUB1」を達成することができ、最初のサブスクリプションの「0 SUB2」ためと:あなたは後でそれが出力の最後の3行を作ったよ
subject.next(1)
を呼び出す最初の 'next'コールの後に"副作用 "、" 1 sub1 "、" 1 sub2 "? –