我想传递3个对象中的每个发射值,对于一个对象,我们基本上可以像往常一样:
Observable.just(KV("1", "Alex"), KV("2", "LeBron"), KV("3", "Kobe"), KV("1", "Kevin"))
.flatMapCompletable(keyValue -> doSth(keyValue))
但是对于其他人我想分组(KV :: getKey)然后收集(例如,concat值)。
Observable.just(KV("1", "Alex"), KV("2", "LeBron"), KV("3", "Kobe"), KV("1", "Kevin"))
.groupBy(KV::getKey)
.collect(Result::new, (acc, keyVal) -> acc.add(keyVal.getVal()))
.flatMapCompletable(result -> writeResultSomeWhere());
我如何在1个链中做到这一点?
谢谢!
答案 0 :(得分:0)
你可以publish
主要来源:
Observable.just(KV("1", "Alex"), KV("2", "LeBron"), KV("3", "Kobe"), KV("1", "Kevin"))
.publish(o -> Completable.merge(
o.flatMapCompletable(keyValue -> doSth(keyValue)),
o.groupBy(KV::getKey)
.collect(Result::new, (acc, keyVal) -> acc.add(keyVal.getVal()))
.flatMapCompletable(result -> writeResultSomeWhere())
));