How to convert an Observable to a ReplaySubject?

后端 未结 2 387
悲哀的现实
悲哀的现实 2020-12-28 17:25

Here is what I\'m doing now to convert an Observable to a ReplaySubject:

const subject = new          


        
相关标签:
2条回答
  • 2020-12-28 18:04

    You can use just observable.subscribe(subject) if you want to pass all 3 types of notifications because a Subject already behaves like an observer. For example:

    let subject = new ReplaySubject();
    subject.subscribe(
      val => console.log(val),
      undefined, 
      () => console.log('completed')
    );
    
    Observable
      .interval(500)
      .take(5)
      .subscribe(subject);
    
    setTimeout(() => {
      subject.next('Hello');
    }, 1000)
    

    See live demo: https://jsbin.com/bayewo/2/edit?js,console

    However this has one important consequence. Since you've already subscribed to the source Observable you turned it from "cold" to "hot" (maybe it doesn't matter in your use-case).

    0 讨论(0)
  • 2020-12-28 18:15

    Like the first answer, as subject is also an observer.

    const subject = new Rx.ReplaySubject(1);
    observable.subscribe(subject);
    
    0 讨论(0)
提交回复
热议问题