【发布时间】:2017-05-16 09:15:59
【问题描述】:
我有一个函数可以在特定时间间隔执行一些数据。类似于轮询函数的东西:
function poll(handler) {
setInterval(handler, 1000); // Mocking network communication
}
所以我想在像这样的redux-observable epic 中使用该函数(后面是伪代码):
action$
.filter(...)
.map((action) => poll)
.map(results from poll)
如何订阅轮询功能并使用 rxjs?
编辑:
我尝试过但失败了
function start() {
return Rx.Observable.create((observer) => poll(observer.next));
}
function startProcess(action$) {
return action$
.filter((action) => action.type === 'START_PROCESS')
.map((action) => start())
.swipWhile((result) => result !== 'proceed') // I only want to dispatch the next action after we get a `proceed` result from the polling function
.map(() => ({ type: 'CAN_START_PROCESS' })
}
我可以将poll 函数包装成一个promise,然后使用Rx.Observable.fromPromise,但我想以反应的方式来做。
【问题讨论】:
-
所以你想为每个动作注册一个新的轮询“looper”?
-
基本上,我想听网络,直到收到
proceed消息。所以 redux 操作流程类似于:START_PROCESS-> 进入 redux 可观察史诗 -> 在这里我们监听可观察的轮询,直到我们继续进行 ->START_PROCESS_SUCCESS
标签: rxjs redux-observable