Cuando trato de usar throwError desde dentro de catchError para devolver un error, aparece el siguiente mensaje de desaprobación
La firma '(error: any): Observable' de 'throwError' está en desuso.(6387)
const { Observable, throwError } = rxjs; const { catchError } = rxjs.operators; new Observable((observer) => { observer.next('first emission'); observer.error('error emission'); observer.complete(); }).pipe( catchError((error) => { console.log('Caught error:', error); return throwError(error); // <-- deprecation here }) ).subscribe({ next: (value) => console.log('Next:', value), error: (error) => console.log('Error:', error), complete: () => console.log('Complete') }); .as-console-wrapper { max-height: 100% !important; top: 0px } <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.4.0/rxjs.umd.min.js"></script>Reproducción en desuso: Stackblitz
El motivo de la desaprobación se explica aquí :
El soporte para pasar un valor de error se eliminará en v8. En su lugar, pase una función de fábrica a
throwError(() => new Error('test')). Esto es
- porque creará el error en el momento en que debe crearse y capturará un seguimiento de pila más apropiado. Si
- por alguna razón necesita crear el error antes de tiempo, aún puede hacerlo:
const err = new Error('test'); throwError(() => err);
Así que podríamos hacer
.pipe( catchError((error) => { return throwError(() => new Error(error)); }) ).subscribe({ error: (error) => console.log('Error:', error.message) });o
.pipe( catchError((error) => { return throwError(() => error); }) ).subscribe({ error: (error) => console.log('Error:', error) });Ejemplo de trabajo: Stackblitz