gpt4 book ai didi

java - RxJava 缓冲 - 忽略零项

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:57 30 4
gpt4 key购买 nike

这是我用于缓冲和转换传入事件的代码:

public Publisher<Collection<EventTO>> logs(String eventId) {
ConnectableObservable<Event> connectableObservable = eventsObservable
.share().publish();
connectableObservable.connect();

connectableObservable.toFlowable(BackpressureStrategy.BUFFER)
.filter(event -> event.getId().equals(eventId))
.buffer(1, TimeUnit.SECONDS, 50)
.map(eventsMapper::mapCollection);
}

这里的问题是 Flowable 每秒返回一个空列表,尽管没有事件发布到 eventsObservable

有没有一种方法可以保存 .buffer 直到至少有一个对象?

注意:看起来有一种方法可以在 C# 中做到这一点(此处描述: https://stackoverflow.com/a/30090185/668148 )。但是用 Java 怎样才能做到呢?

最佳答案

根据 Mark Keen 的建议,.distinctUntilChanged 可以解决问题。

因此,如果缓冲后有 1+ 个项目,以下代码将推送事件列表:

connectableObservable.toFlowable(BackpressureStrategy.BUFFER)
.filter(event -> event.getId().equals(eventId))
.buffer(1, TimeUnit.SECONDS, 50)
.distinctUntilChanged() // <<<======
.map(eventsMapper::mapCollection);

关于java - RxJava 缓冲 - 忽略零项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54271359/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com