concat / forkJoin确保一个observable在另一个之前完成

时间:2017-08-19 14:36:39

标签: redux rxjs rxjs5 redux-observable

我想订阅两个不同的流,A和B.

但是,尽管两个事件都可以缓冲,但在处理任何与B的异步任务之前,所有A必须完成。

输入流

--- ---- A1 B1 B2 ---- ---- ---- A2>

期望的输出

------ ResponseA1 ------------- ResponseA2 ------- ---- ResponseB1 --- ResponseB2>

我最初尝试

outputStream = Observable.concat(A,B)

我注意到B不会开火。这是forkJoin的用例吗?

编辑:

  • 流A在Rx意义上没有完成,因为我们希望保持订阅同一组事件(在这种情况下为redux操作)

  • 我真正想要在A流周围指定的是它的完成"事件看起来满足两个条件:

    1. 是否完全从A完成缓冲异步任务?
    2. 缓冲区是否为空?

这非常迫切,因为我正在从传奇中重构我们的代码库。

如果我可以在" Rx-speak"

中说出来
StreamA = actionStream.concatMap(action => longAsyncTask())
StreamB = actionStream.switchMap(action => shortAsyncTask())

MasterStream = Observable.forkJoin(StreamA, StreamB)

我希望MasterStream让两个流都订阅它们必需的actionTypes,StreamA任务首先发出值,一旦StreamA不再发出值,只从StreamB发出一个val

0 个答案:

没有答案