我已经开始在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)可以解决我的问题,但我尝试了所有可能的组合,但仍然无法达到工作版本。
答案 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