【发布时间】:2018-04-23 00:54:39
【问题描述】:
如何用 RxJS 实现这个场景。
当我想获取用户(第一个来源)时,我需要检查互联网连接(第二个来源)。如果 Internet 未连接,则将第一个源排队,直到 Internet 重新打开。如果互联网重新打开,则发出第一个源。我可以制作后一个,但在第二个来源为真之前,我无法弄清楚如何将第一个来源排队。
请在此处查看我的代码:
const userEpic = action$ =>
action$.ofType(USER_REQUEST)
.withLatestFrom(action$.ofType(CONNECTION))
.filter(([first, second]) => second.value === true)
.do(a => console.log('can fetch a user'))
.mapTo({ type: SUCCESS });
【问题讨论】:
-
你好。你能进一步澄清这一点吗?示例代码似乎与描述不匹配(没有用户,没有互联网检查,行为似乎不相关等)很可能排队 observables 不是理想的解决方案,所以也尝试在没有这种假设的情况下进行解释,如果可能的话:)
-
嗨对不起,我修改了示例代码以反映描述。我还改进了 jsbin 代码。在 jsbin 中单击,断开连接然后启动请求,然后单击连接,我应该在控制台中看到
can fetch a user。调度第一个源的最后一个值应该没问题,或者甚至更好地调度所有尚未发出的值。我查看了buffer运算符,但不知道如何缓冲第一个源。感谢收看。
标签: javascript reactjs rxjs react-redux redux-observable