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