- 제목 : 구독시 항상 구독 후 푸시 된 데이터를 가져옵니다. 즉, 이전 푸시 된 값이 수신되지 않습니다 .
const mySubject = new Rx.Subject();
mySubject.next(1);
const subscription1 = mySubject.subscribe(x => {
console.log('From subscription 1:', x);
});
mySubject.next(2);
const subscription2 = mySubject.subscribe(x => {
console.log('From subscription 2:', x);
});
mySubject.next(3);
subscription1.unsubscribe();
mySubject.next(4);
이 예에서 콘솔에 인쇄 될 결과는 다음과 같습니다.
From subscription 1: 2
From subscription 1: 3
From subscription 2: 3
From subscription 2: 4
늦게 도착하는 구독이 주제로 푸시 된 일부 데이터에서 어떻게 누락되는지 확인하십시오.
- Replay subjects : 새 구독으로 내보낼 이전 값 의 버퍼를 유지하여 도움을 줄 수 있습니다 .
다음 buffer of 2 previous values
은 a 가 새 구독에서 유지되고 내보내 지는 재생 주제의 사용 예입니다 .
const mySubject = new Rx.ReplaySubject(2);
mySubject.next(1);
mySubject.next(2);
mySubject.next(3);
mySubject.next(4);
mySubject.subscribe(x => {
console.log('From 1st sub:', x);
});
mySubject.next(5);
mySubject.subscribe(x => {
console.log('From 2nd sub:', x);
});
콘솔에서 제공하는 내용은 다음과 같습니다.
From 1st sub: 3
From 1st sub: 4
From 1st sub: 5
From 2nd sub: 4
From 2nd sub: 5
- 행동 주제 : 재생 주제와 유사하지만 마지막으로 내 보낸 값만 다시 내 보냅니다. 이전에 내 보낸 값이없는 경우 기본값을 다시 내 보냅니다.
const mySubject = new Rx.BehaviorSubject('Hey now!');
mySubject.subscribe(x => {
console.log('From 1st sub:', x);
});
mySubject.next(5);
mySubject.subscribe(x => {
console.log('From 2nd sub:', x);
});
그 결과 :
From 1st sub: Hey now!
From 1st sub: 5
From 2nd sub: 5
참조 : https://alligator.io/rxjs/subjects/