cold observable , hot observable

lee jae hwan·2022년 9월 1일
0

RxJS

목록 보기
14/21

cold observable : uni cast

hot observable : multi cast

    let count = Math.random();
    let observable$ = new Observable(observer=>{
      observer.next(count);
    });

    observable$.subscribe(val=>{
      console.log('observer1 '+ val);
    })
    observable$.subscribe(val=>{
      console.log('observer2 '+ val);
    })
    // 단순히 같은 값을 멀티캐스트

    let dataStream$ = interval(1000);
    dataStream$.subscribe(val=>{
      console.log('interval data 1 '+ val);
    });
    setTimeout(() => {
      dataStream$.subscribe(val=>{
        console.log('interval data 2 '+val);
      });
    }, 2000);

setTimeout으로 2초후 구독이 시작되면 스트림으로부터 0,1,2,3 순으로 데이터가 방출된다.


    let dataStream$ = interval(1000);
    let subject$ = new Subject();

    dataStream$.subscribe(subject$);

    subject$.subscribe(val=>{
      console.log('interval data 1 '+ val);
    });
    setTimeout(() => {
      subject$.subscribe(val=>{
        console.log('interval data 2 '+val);
      });
    }, 2000);

subject를 생성하고

dataStream.subscribe(subject.subscribe(subject);
subject가 옵저버블의 옵저버역활을 하고한다.

subject$.subscribe메소드로
subject가 옵저버블역활을 하고하여 제대로된 multicast가 된다.

0개의 댓글