Javascript 从RxJs 5迁移到6:开关映射和间隔中断
我很难理解RxJs。5和6之间的突变对我来说很难理解 我有以下代码和以下问题Javascript 从RxJs 5迁移到6:开关映射和间隔中断,javascript,rxjs,rxjs5,angular6,rxjs6,Javascript,Rxjs,Rxjs5,Angular6,Rxjs6,我很难理解RxJs。5和6之间的突变对我来说很难理解 我有以下代码和以下问题 .间隔方法不再可从Observable中使用 .switchMap方法在.interval中不再可用 我检查了变更日志和修复破坏性变更的建议,但无法确定需要做什么。按照我的理解,我的代码很旧,没有使用管道操作符,但这就是我所能理解的全部 let polling = Observable.interval(2000) .switchMap(() => this.http.get(this.videoStatusUR
let polling = Observable.interval(2000)
.switchMap(() => this.http.get(this.videoStatusURL + this.taskID))
.subscribe(
(data) => {
if (data["state"] === "SUCCESS") {
//get final video here
console.log("polling succeeded");
this.downloadFinalVideo();
polling.unsubscribe();
}
},
error => this.handleError(error));
请参阅上的一节,必须通过调用.pipe()
来调用运算符,因此需要执行以下操作
从'rxjs'导入{interval};
从“rxjs/operators”导入{switchMap};
让轮询=间隔(2000)
.pipe(switchMap(()=>this.http.get(this.videoStatusURL+this.taskID)))
.订阅(
(数据)=>{
如果(数据[“状态”]=“成功”){
//在这里获取最终视频
console.log(“轮询成功”);
下载finalvideo();
轮询。取消订阅();
}
},
error=>this.handleError(error));
或者,您可以安装
rxjs compat
,但是这只是一个兼容层,您应该真正使用管道语法。这里解释了所有内容。您基本上希望使用interval()
创建操作符,然后使用rxjs/operators
中的switchMap
我尝试更改方法,但它抱怨.interval()中的.switchMap不可用