RxJava:在发送给观察者之前,如何仅修改第一项

时间:2018-11-28 06:29:13

标签: rx-java rx-java2

我有一个Rx流,它将多个项目发送给观察者。 但我想修改发送回的第一项。其他所有项目均可原样发送。

我知道map()会拦截所有物品,但是我将不得不保留一个计数器,该计数器当前正在发射哪个物品。 有没有办法只对第一个项目执行此操作?

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试一下

假设您有一串字符串["First", "Second", "Third", "Fourth"],并且只需要修改第一个项目

Observable<String> stringObservable = Observable.just("First", "Second", "Third", "Fourth").publish().refCount();
stringObservable.skip(1)
            .startWith(stringObservable.take(1).map(s -> "Modified"))
            .subscribe(new Consumer<String>() {
                @Override
                public void accept(String s) throws Exception {
                    System.out.println(s);
                }
            });

结果将是

    Modified
    Second
    Third
    Fourth