Куда поместить оператор тайм-аута в Redux Observable, выбирающий эпос - PullRequest
0 голосов
/ 02 мая 2018

Я хотел бы добавить оператор тайм-аута в мою эпопею получения, которая отменяет вызов API после заданной продолжительности. Где бы я поместил оператор в примере кода ниже? Правильна ли моя попытка? Не работает, как надеялись.

const fetchingEpic = (action$, store) =>
  action$
    .ofType('FETCH_DATA')
    .mergeMap(() =>
      fromPromise(
        axios.post(`/url`, payload)
      )
        .map(response => ({
          type: 'FETCH_DATA_SUCCESS',
          data: response.data
        }))
        .timeout(5000)
        .catch(error =>
          Observable.of({
            type: 'FETCH_DATA_ERROR',
            error
          })
        )
    );

1 Ответ

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

На основе этого урока Я думаю, что время ожидания должно быть прямо ниже fromPromise:

const fetchingEpic = (action$, store) =>
  action$
    .ofType('FETCH_DATA')
    .mergeMap(() =>
      fromPromise(
        axios.post(`/url`, payload)
      )
        .timeout(5000)
        .map(response => ({
          type: 'FETCH_DATA_SUCCESS',
          data: response.data
        }))
        .catch(error =>
          Observable.of({
            type: 'FETCH_DATA_ERROR',
            error
          })
        )
    );
...