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"순서를 달성 할 수 있으며, 첫 번째 next 호출 후 "부작용", "1 sub1", "1 sub2"? –