Как использовать Race с rxjs 6

У меня есть следующее утверждение, которое хорошо работало с rxjs5.5 и redux observable 0.x. Теперь я использую redux-observable v1 и rxjs v6. Я не могу понять, как преобразовать гонку для следующего кода (так как его использование устарело).

(action$, state$) =>
    action$.pipe(
      ofType(REQUEST),
      switchMap(action => {
        return race(
          action$.pipe(
            ofType(REQUEST_CANCEL),
            take(1),
            mapTo(
              observableOf(
                failure({
                  description: "Cancelled by user."
                })
              )
            ),
            ajax(`url`).pipe(
              map(response => response.response),
              map(data => success(data)),
              catchError(error =>
                handleError(FAILURE, error)
              )
            )
          )
        );
      })
    ),

Может быть какая-то другая проблема. Он не запрашивает. Думаю, проблема в расе.


person Mohamed    schedule 03.08.2018    source источник


Ответы (1)


Я пропустил обновленную документацию,

import { ajax } from 'rxjs/ajax';

const fetchUserEpic = action$ => action$.pipe(
  ofType(FETCH_USER),
  mergeMap(action => race(
    ajax.getJSON(`/api/users/${action.payload}`).pipe(
      map(response => fetchUserFulfilled(response))
    ),
    action$.pipe(
      ofType(FETCH_USER_CANCELLED),
      map(() => incrementCounter()),
      take(1)
    )
  ))
);
person Mohamed    schedule 03.08.2018