나는'm 지에 대한 명확한 차이를 피사체 및 BehaviorSubject. 그것은 단지는 BehaviorSubject 는 getValue 기능입니까?
A BehaviorSubject 보유하고 하나의 값이 있습니다. 면 그것은 가입되어 그것이 방출하는 값 즉시. 주제는't 를 개최합니다.
예를 들어(공 RxJS5API):
const subject = new Rx.Subject();
subject.next(1);
subject.subscribe(x => console.log(x));
콘솔 출력이 빈
BehaviorSubject 를 들어:
const subject = new Rx.BehaviorSubject();
subject.next(1);
subject.subscribe(x => console.log(x));
콘솔 출력:1
또한 다음 사항에 주의합니다.
-BehaviorSubject 만들 수 있습니다 초기 값:새로운 Rx.BehaviorSubject(1) -고려 ReplaySubject 를 원하는 경우 피사체에게 더 이상의 가치
BehaviourSubject 이 반환됩니다 초기 값 또는 현재에 가치 구독
var subject = new Rx.BehaviorSubject(0); // 0 is the initial value
subject.subscribe({
next: (v) => console.log('observerA: ' + v) // output initial value, then new values on `next` triggers
});
subject.next(1); // output new value 1 for 'observer A'
subject.next(2); // output new value 2 for 'observer A', current value 2 for 'Observer B' on subscription
subject.subscribe({
next: (v) => console.log('observerB: ' + v) // output current value 2, then new values on `next` triggers
});
subject.next(3);
출력:
observerA: 0
observerA: 1
observerA: 2
observerB: 2
observerA: 3
observerB: 3
주체 반환하지 않습니 현재에 가치입니다. 그것은 우리에만.다음(value)
호출하고 반환/출력 thevalue
var subject = new Rx.Subject();
subject.next(1); //Subjects will not output this value
subject.subscribe({
next: (v) => console.log('observerA: ' + v)
});
subject.subscribe({
next: (v) => console.log('observerB: ' + v)
});
subject.next(2);
subject.next(3);
다음과 같은 출력에서 콘솔:
observerA: 2
observerB: 2
observerA: 3
observerB: 3
나는 그냥프로젝트를 만들었는 설명이 무엇입차이 모든 과목:
https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async