我有一个Rx流,它将多个项目发送给观察者。 但我想修改发送回的第一项。其他所有项目均可原样发送。
我知道map()
会拦截所有物品,但是我将不得不保留一个计数器,该计数器当前正在发射哪个物品。
有没有办法只对第一个项目执行此操作?
谢谢。
答案 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