의 차이점은 무엇입 주제 및 BehaviorSubject?

나는'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 를 원하는 경우 피사체에게 더 이상의 가치

해설 (3)

BehaviourSubject

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
해설 (6)

나는 그냥프로젝트를 만들었는 설명이 무엇입차이 모든 과목:
https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async

해설 (0)