首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RxJS:签名‘(错误:任意):Observable<never>’of 'throwError‘被废弃。

RxJS:签名‘(错误:任意):Observable<never>’of 'throwError‘被废弃。
EN

Stack Overflow用户
提问于 2021-11-26 13:06:42
回答 1查看 212关注 0票数 0

当我试图从throwError内部使用catchError返回一个错误时,我会得到以下的弃用消息

“throwError”的签名‘(错误:任意):可观察的’是不推荐的。

代码语言:javascript
运行
复制
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')
});
代码语言:javascript
运行
复制
.as-console-wrapper { max-height: 100% !important; top: 0px }
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.4.0/rxjs.umd.min.js"></script>

弃用复制:斯塔克布利茨

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-26 13:06:42

反对的原因被解释为这里

对传递错误值的支持将在v8中删除。相反,将一个工厂函数传递给throwError(() => new Error('test'))。这是

  • 因为它将在当前创建错误,因此应该创建并捕获更合适的堆栈跟踪。如果
  • 由于某些原因,您需要提前创建错误,您仍然可以这样做:const err = new Error('test'); throwError(() => err);

所以我们要么

代码语言:javascript
运行
复制
.pipe(
  catchError((error) => {
    return throwError(() => new Error(error));
  })
).subscribe({
  error: (error) => console.log('Error:', error.message)
});

代码语言:javascript
运行
复制
.pipe(
  catchError((error) => {
    return throwError(() => error);
  })
).subscribe({
  error: (error) => console.log('Error:', error)
});

工作示例:斯塔克布利茨

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70124902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档