RxJS 6中如何正确导入ErrorObservable或_throw?
RxJS 6 中创建错误 Observable 的正确导入方式
在 RxJS 6 及后续版本里,你之前用的 _throw(用来避开 throw 关键字的导出)已经被重命名为**throwError**,而且导入路径也统一到了 rxjs 核心包下,再也不用从 rxjs/observable/throw 导入啦。
具体的使用步骤如下:
- 首先导入
throwError:
import { throwError } from 'rxjs';
- 然后创建错误 Observable:
const error$ = throwError(() => new Error('Something went wrong!'));
这里要提一句,RxJS 6 之后推荐用工厂函数形式传递错误(也就是上面例子里的 () => new Error(...)),而不是直接传错误实例。这么做是为了保证每次订阅这个 Observable 时都会生成新的错误实例,避免因为复用错误实例引发的意外问题。
对比你在 RxJS 5.5.2 里的写法:
// RxJS 5.5.2 的写法(现已废弃) import { _throw } from 'rxjs/observable/throw'; const error$ = _throw(new Error('Something went wrong!'));
另外,如果是从旧版本迁移到 RxJS 6,官方有个 rxjs-compat 包可以临时兼容旧的导入和写法,但还是建议尽快切换到 throwError 的新方式,毕竟 rxjs-compat 只是过渡方案,后续版本会被移除。
内容的提问来源于stack exchange,提问作者Martin Nuc
相关产品推荐
相关产品推荐

