当我试图从throwError
内部使用catchError
返回一个错误时,我会得到以下的弃用消息
“throwError”的签名‘(错误:任意):可观察的’是不推荐的。
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>
弃用复制:斯塔克布利茨
发布于 2021-11-26 13:06:42
反对的原因被解释为这里
对传递错误值的支持将在v8中删除。相反,将一个工厂函数传递给
throwError(() => new Error('test'))
。这是
const err = new Error('test'); throwError(() => err);
所以我们要么
.pipe(
catchError((error) => {
return throwError(() => new Error(error));
})
).subscribe({
error: (error) => console.log('Error:', error.message)
});
或
.pipe(
catchError((error) => {
return throwError(() => error);
})
).subscribe({
error: (error) => console.log('Error:', error)
});
工作示例:斯塔克布利茨
https://stackoverflow.com/questions/70124902
复制相似问题