我正在使用 RxJava 来处理我们从队列中提取的一些通知。
RxJava 似乎在一个简单的工作流中工作得很好,现在随着新需求的出现,流程变得越来越复杂,分支越来越多(请参见下图作为参考)
我试图用一个小单元测试来举例说明流程:
@Test
public void test() {
Observable.range(1, 100)
.groupBy(n -> n % 3)
.toMap(GroupedObservable::getKey)
.flatMap(m1 -> {
Observable<Integer> ones1 = m1.get(0);
Observable<Integer> twos1 = m1.get(1).map(n -> n - 10);
Observable<Integer> threes = m1.get(2).map(n -> n + 100);
Observable<Integer> onesAndTwos = Observable.merge(ones1, twos1)
.map(n -> n * 3)
.groupBy(n -> n % 2)
.toMap(GroupedObservable::getKey)
.flatMap(m2 -> {
Observable<Integer> ones2 = m2.get(0).map(n -> n * 10);
Observable<Integer> twos2 = m2.get(1).map(n -> n * 100);
return Observable.merge(ones2, twos2);
});
return Observable.merge(onesAndTwos, threes).map(n -> n +1);
})
.subscribe(System.out::println);
}
虽然使用 RxJava 在技术上仍然可以实现,但我现在想知道它是否是一个不错的选择,因为我必须在 main 中进行 2 级嵌套flatMap,这看起来不太整洁。
这是描述上述工作流程的正确方式吗?或者 RxJava 不适合分支工作流?
HUX布斯
牛魔王的故事
相关分类