I was using RXJS 5, now as I upgraded it to 6, I am facing some problems.
Previously I was able to use catch and finally but as per update catch is replaced with catchError (with in the pipe) now how to use finally?
Also I have some questions :
Do I need to change throw->throwError (in below code Observable.throw(err);)
import { Observable, Subject, EMPTY, throwError } from "rxjs"; import { catchError } from 'rxjs/operators'; return next.handle(clonedreq).pipe( catchError((err: HttpErrorResponse) => { if ((err.status == 400) || (err.status == 401)) { this.interceptorRedirectService.getInterceptedSource().next(err.status); return Observable.empty(); } else { return Observable.throw(err); } }) //, finally(() => { // this.globalEventsManager.showLoader.emit(false); //}); );
Also how to use publish().refCount() now ?
finalizelinkReturns an Observable that mirrors the source Observable, but will call a specified function when the source terminates on complete or error. The specified function will also be called when the subscriber explicitly unsubscribes.
pipe( filter(num => num % 2 === 0), map(num => num * num)); squareOf2. subscribe( (num) => console. log(num)); The of() method will create and return an Observable from the 1, 2, 3, 4, 5,6 numbers and the pipe() method will apply the filter() and map() operators on each emitted value.
Always put the “catchError” operator inside a switchMap (or similar) so that it only ends the API call stream and then returns the stream to the switchMap, which continues the Observable.
RxJS catchError() operator is an error-handling operator used to handle and take care of catching errors on the source observable by returning a new observable or an error.
use throwError
instead of Observable.throw
, see https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md#observable-classes
finally
was renamed to finalize
and you'll use it inside pipe()
among other operators.
the same with publish()
and refCount()
. Both are operators you'll use inside pipe()
.
Need to import finalize
from rxjs/operators
.
import { finalize } from 'rxjs/operators';
Then finalize is used inside the pipe()
,
observable() .pipe( finalize(() => { // Your code Here }) ) .subscribe();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With