rxjs - 当其他史诗正在运行时是否可以执行 `skip` ?

标签 rxjs redux-observable

我是 RxJS 的初学者,如果这没有意义,我很抱歉。

当前的时间流动如下所示:

REMOVE_USER -----------------------> SUCCESS
---------------GET_DEVICE--->SUCCESS--------

高级目标是在删除用户时跳过获取设备。

过于简单化的史诗:

const getDeviceEpic = action$ => action$.pipe(
  ofType('GET_DEVICE_REQUEST'),
  mergeMap(() => from(service...).pipe(
    mapTo({ type: 'GET_DEVICE_SUCCESS' }))
  ))

const removeUser = action$ => action$.pipe(
  ofType('REMOVE_USER_REQUEST'),
  mergeMap(() => from(service...).pipe(
    mapTo({ type: 'REMOVE_USER_SUCCESS' }))
  )
)

我将如何处理这个问题?

我不确定是否可以添加例如takeUntil(removeUserAPICall$) 到设备应用。或者也许检查 REMOVE_USER_REQUEST 是否已被触发,然后等待 REMOVE_USER_SUCCESS 继续。

最佳答案

有可能,您可以通过 windowToggle 来实现这一目标:

windowToggle

在您的情况下,“on”REMOVE_USER_SUCCESS“off”REMOVE_USER_REQUEST

因此,我们将在 REMOVE_USER_SUCCESSREMOVE_USER_REQUEST 之间监听 GET_DEVICE_REQUEST

请注意,我们必须在打开过滤器的情况下开始,方法是将 startWith(void 0) 添加到“on”流。

例如:

const getDeviceEpic = action$ => action$.pipe(
  ofType('GET_DEVICE_REQUEST'),
  windowToggle(
    action$.pipe(ofType('REMOVE_USER_SUCCESS'), startWith(void 0)),
    ()=>action$.pipe(ofType('REMOVE_USER_REQUEST')
  ),
  mergeMap(() => from(service...).pipe(
    mapTo({ type: 'GET_DEVICE_SUCCESS' }))
  ))

const removeUser = action$ => action$.pipe(
  ofType('REMOVE_USER_REQUEST'),
  mergeMap(() => from(service...).pipe(
    mapTo({ type: 'REMOVE_USER_SUCCESS' }))
  )
)

* 警告:用记事本编写

但是,恕我直言,在商店上挂一面旗帜也很好(也许,作为国家的指示)。

有关暂停和静音流的更多信息,请参阅我的文章“Pausable Observables in RxJS”。

--

希望这有帮助

关于rxjs - 当其他史诗正在运行时是否可以执行 `skip` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55967638/

相关文章:

redux - 返回 EMPTY 崩溃我的 redux 可观察链

rxjs - 如何为 Observable.interval() 添加延迟?

javascript - Rxjs/响应式(Reactive)编程/redux observable 中的全局变量使用

javascript - 如何从错误处理程序分派(dispatch)操作并立即中断 redux-observable 中 Observable 链的其余部分?

javascript - 如何解决 RxJS 范围重叠问题?

javascript - RxJs:轮询直到完成间隔或收到正确的数据

javascript - 在 npm lib 中使用的 rxjs 应该是依赖关系、对等依赖关系还是两者兼而有之?

redux - 如何在一部史诗中处理多种 Action 类型?这样做有什么缺点吗?

redux-observable 无法从发出的 Action 中捕获错误,错误停止 Action 流

react-router-v4 - redux-observable 史诗中使用的 `push` 中的 "connected-react-router"不会更改 url 并呈现空页面