Миграция с RxJs 5 на 6: switchMap и Interval не работают - PullRequest
0 голосов
/ 29 мая 2018

Мне трудно понять RxJs.Мне трудно понять критические изменения между 5 и 6.

У меня есть следующий код и следующие проблемы.

  1. .interval метод больше не доступен из Observable
  2. .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));

1 Ответ

0 голосов
/ 30 мая 2018

См. Раздел о синтаксисе канала в документе миграции , операторы должны вызываться путем вызова .pipe(), поэтому вам нужно сделать что-то вроде

import { interval } from 'rxjs';
import { switchMap } from 'rxjs/operators';

let polling = interval(2000)
.pipe(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));

В качестве альтернативы, вы могли быустановите rxjs-compat, однако это всего лишь уровень совместимости, и вы действительно должны использовать синтаксис канала.

...