What is the difference between a Observable and a Subject in rxjs?

前端 未结 8 918
难免孤独
难免孤独 2020-12-01 00:05

i was going through this blog and to read about Observables and i couldnt figure out the difference between the Observable and a Subject

相关标签:
8条回答
  • 2020-12-01 00:49

    From another perspective, it is good to note that the subscription to an Observable re-execute the Observable function. This can lead performance issue if the data source is a service for instance.

    If you want several subscribers to get the same value, you may need a Subject. For this, make sure that your subscription is set before the Subject subscribed to the data source. Otherwise, your process would be stuck.

    More details here: https://javascript.tutorialhorizon.com/2017/03/23/rxjs-subject-vs-observable/

    0 讨论(0)
  • 2020-12-01 00:54

    In stream programming there are two main interfaces: Observable and Observer.

    Observable is for the consumer, it can be transformed and subscribed:

    observable.map(x => ...).filter(x => ...).subscribe(x => ...)
    

    Observer is the interface which is used to feed an observable source:

    observer.next(newItem)
    

    We can create new Observable with an Observer:

    var observable = Observable.create(observer => { 
        observer.next('first'); 
        observer.next('second'); 
        ... 
    });
    observable.map(x => ...).filter(x => ...).subscribe(x => ...)
    

    Or, we can use a Subject which implements both the Observable and the Observer interfaces:

    var source = new Subject();
    source.map(x => ...).filter(x => ...).subscribe(x => ...)
    source.next('first')
    source.next('second')
    
    0 讨论(0)
提交回复
热议问题