Redux-Observable

时间:2017-10-19 13:41:35

标签: reactjs rxjs react-redux redux-observable

我已经开始在React中使用redux-observable了,我坚持使用间隔API请求。

这是我的史诗的代码,效果很好,但仅适用于单个请求:

const fetchPointValue = (action$) =>
  action$
    .ofType(actionTypes.REQUEST_POINT_VALUE)
    .mergeMap(action =>
          ajax.getJSON(`${API_SERVER_URL}/point/value/${action.payload.id}`)
            .map(response => receivePointValue(action.payload.id, response))
            .startWith(fetchingPointValue(action.payload.id))
    )

现在,我需要将其修改为间隔 - 如果调用 REQUEST_POINT_VALUE 操作,我需要每隔~5秒请求一次值,直到 REQUEST_POINT_CANCEL 操作。 可能使用 .takeUntil(“REQUEST_POINT_CANCEL”) .interval(5000)可以解决我的问题,但我尝试了所有可能的组合,但仍然无法达到工作版本。

1 个答案:

答案 0 :(得分:3)

是的,您可以使用.interval.takeUntill

来实现这一目标
action$
  .ofType(actionTypes.REQUEST_POINT_VALUE)
  .mergeMap(action =>
    Observable
      .interval(5000)
      .switchMap(/* make request here */)
      .takeUntil(action$.ofType(actionTypes.REQUEST_POINT_CANCEL))
  )

请在此处查看文档和示例 - 3.1 Cancellation