RxJs 6:如何从Observable获取ConnectableObservable并改写RxJs5代码?
把RxJS 5的Observable.publish()迁移到RxJS 6
嗨,这个问题我熟!RxJS 6对操作符的使用方式做了不小的调整,publish()不再是Observable实例的直接方法了,得改用**管道式操作符(pipeable operators)**的写法,具体步骤如下:
第一步:先从
rxjs/operators导入publish操作符import { publish } from 'rxjs/operators'; // 如果需要给变量指定明确类型,还可以导入ConnectableObservable import { ConnectableObservable } from 'rxjs';第二步:用
pipe()方法包裹publish()操作符,替代原来的链式调用
你原来的代码:const myConnectableObservable = this.getObservable().publish()改写后变成:
// 类型标注可选,根据自己的类型需求决定是否添加 const myConnectableObservable: ConnectableObservable<any> = this.getObservable().pipe(publish()) as ConnectableObservable<any>;第三步:后续用法和RxJS 5完全一致
比如需要手动触发连接时,还是可以调用connect()方法:myConnectableObservable.connect();
额外提个小技巧:如果之前你用的是publish().refCount()这种自动管理连接的写法,RxJS 6里可以直接用share()操作符替代,效果完全相同,写法更简洁:
import { share } from 'rxjs/operators'; const sharedObservable = this.getObservable().pipe(share());
内容的提问来源于stack exchange,提问作者Kevin Kalitowski
相关产品推荐
相关产品推荐

