Отправка действия каждую секунду с помощью наблюдаемого редукса - PullRequest
0 голосов
/ 31 января 2019

При обычном Rxjs мне удалось реализовать «обратный отсчет», вызывая метод каждую секунду, например, до тех пор, пока не останется больше времени:

const time = 5 
var timer$ = Rx.Observable.interval(1000) 
timer$
  .take(time)
  .map((v)=> {
           const remaining = time - 1 - v
           return remaining; 
      })
  .subscribe((v)=>console.log('Countdown', v))

Теперь, с redux-observable,Я хочу реализовать обратный отсчет, при котором я получаю начальное время (например, 5000 секунд) и отправляю действие каждую секунду, пока начальное время не уменьшается до 0. Пока у меня есть это:

action$.pipe(
        ofType(START_COUNTDOWN),
        switchMap(() =>
            interval(1000)
                .map((time) => updateTime(time))),
);

Но я получаю ошибку: Property map does not exist on type Observable<Number>.В чем я не ошибаюсь, потому что чувствую, что это не должно быть очень трудно сделать с redux-observable.

1 Ответ

0 голосов
/ 31 января 2019

В вашем приложении redux-observable вы используете более новую версию RxJS (> 6.0), которая поддерживает только операторы с возможностью переноса, в то время как вы пытаетесь использовать старый стиль "patch" (есть также пакет rxjs-compat для обратной совместимости)., но это рекомендуется только для поддержки старого кода).Так что начиная с RxJS 6 вы должны использовать только pipe():

action$.pipe(
  ofType(START_COUNTDOWN),
  switchMap(() => interval(1000).pipe(
    map((time) => updateTime(time))
  )),
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...