RxJS调用throwError出现'(error: any): Observable<never>'签名弃用警告如何解决
RxJS 7.0 之后调整了throwError的API签名,直接传入错误值的用法已被废弃,新版本要求传入一个返回错误值的工厂函数,实现错误的惰性初始化,避免未订阅时不必要的错误对象创建开销。
修复方案非常简单,将代码中触发警告的return throwError(error)替换为:
return throwError(() => error);
修改后的完整可运行代码如下:
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); }) ).subscribe({ next: (value) => console.log('Next:', value), error: (error) => console.log('Error:', error), complete: () => console.log('Complete') });
配套的样式与RxJS引入代码保持不变即可:
.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>
如果需要自定义错误类型,可直接在工厂函数中生成错误实例:
return throwError(() => new Error(`自定义错误信息:${error}`));
内容的提问来源于stack exchange,提问作者Aniruth
相关产品推荐
相关产品推荐

