IT

Subject와 BehaviorSubject의 차이점은 무엇입니까?

lottoking 2020. 5. 21. 08:18
반응형

Subject와 BehaviorSubject의 차이점은 무엇입니까?


주제와 BehaviorSubject의 차이점에 대해서는 명확하지 않습니다. BehaviorSubject에 getValue 함수가있는 것입니까?


BehaviorSubject에는 하나의 값이 있습니다. 구독되면 즉시 값을 내 보냅니다. 주제는 가치를 보유하지 않습니다.

주제 예 (RxJS 5 API 사용) :

const subject = new Rx.Subject();
subject.next(1);
subject.subscribe(x => console.log(x));

콘솔 출력이 비어 있습니다

행동 제목 예 :

const subject = new Rx.BehaviorSubject();
subject.next(1);
subject.subscribe(x => console.log(x));

콘솔 출력 : 1

게다가:

  • 초기 값으로 BehaviorSubject를 생성 할 수 있습니다 : new Rx.BehaviorSubject (1)
  • 주제가 둘 이상의 값을 보유하도록하려면 ReplaySubject를 고려하십시오.

행동 제목

BehaviourSubject는 Subscription의 초기 값 또는 현재 값을 반환합니다

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

제목

제목에서 구독의 현재 값을 반환하지 않습니다. 그것은 .next(value)호출시 에만 트리거 하고 반환 / 출력value

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);

With the following output on the console:

observerA: 2
observerB: 2
observerA: 3
observerB: 3

I just created a project which explain what is the difference between all subjects:
https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async

enter image description here

참고URL : https://stackoverflow.com/questions/43348463/what-is-the-difference-between-subject-and-behaviorsubject

반응형