Javascript 从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

我很难理解RxJs。5和6之间的突变对我来说很难理解

我有以下代码和以下问题

  • .间隔方法不再可从Observable中使用
  • .switchMap方法在.interval中不再可用
  • 我检查了变更日志和修复破坏性变更的建议,但无法确定需要做什么。按照我的理解,我的代码很旧,没有使用管道操作符,但这就是我所能理解的全部

    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不可用