Observables are just like promises.
promise.then(
successFn,
errorFn,
);
observable.subscribe(
nextFn,
errorFn,
completeFn,
);
var observable = Rx.Observable.create(observer => {
observer.next(VALUE);
...
observer.complete();
});
observable.subscribe({
next: value => console.log(value);
error: err => console.error('something wrong occurred: ' + err),
complete: () => console.log('done'),
})
create
- create an observable with given subscription function;fromEvent
- turn event into observable;
Operators take your observable and return a new observable.
map
- map one Observable in another Observable (synchronous way);filter
- pass only data that has correct conditions;debounceTime
- like debounce;distinctUntilChanged
- pass only if data is changed;throttleTime
- like throttle;reduce
- like reduce;scan
- similar to reduce, but it can provide intermediate values;pluck
- extract properties from the object;mergeMap
- can combine data from two Observables, one observable in another (asynchronous way);switchMap
- allow to trigger some values emission whenever another observable emits a value;from
- turn an array, promise, or iterable into an observable;of
- emit variable amount of values in a sequence;concat
- subscribe to observables in order as previous completes, emit values;
takeUntil
- two observables, emit first until second provided observable values;take
- emit provided number of values before completing;combineLatest
- when any observable emits a value, emit the latest value from each;tap
- operator for perform actions or side-effects, such as logging, does not transform values (ex. do);merge
- turn multiple observables into a single observable;forkJoin
- when all observables complete, emit the last emitted value from each;pairwise
- emit the previous and current values as an array;combineLatest
- when any observable emits a value, emit the latest value from each.concatMap
- map values to inner observable, subscribe and emit in order;race
- the observable to emit first is used;ignoreElements
- ignore everything but complete and error;
1. Observables in Redux-observable === Epics;
2. Observer in Redux-observable === store.dispatch;
3. Epic main principle: Action IN => Action OUT;
4. Final scheme:
epic(action*, store).subscribe(store.dispatch)