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

前端 未结 8 1074
难免孤独
难免孤独 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: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')
    

提交回复
热议问题