如何将Observable <t>的第一个元素添加到每个组?

时间:2018-03-21 20:14:19

标签: rx-java rx-java2

假设我有Observable<String> playerNames,其中第一个元素是标题。如何将其分解为多个块(同时在每个组中添加标题)?

playerNamesObservable
     .window(100)
     .to(chunk -> { return playerNamesObservable.concatWith(chunk) }

其中headerObservable基本上是playerNamesObservable.first()

问题在于我要非常小心发出项目(不想使用blockingGet等)

由于

1 个答案:

答案 0 :(得分:1)

使用publish

recordsObservable.publish(shared -> {
    Observable<String> first = shared
        .take(1)
        .replay()
        .autoConnect(0);

    return shared.skip(1)
        .window(100)
        .map(w -> w.startWith(first));
})
.flatMap(chunk -> /* consume each chunk */)