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 ?
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