【发布时间】:2020-08-14 16:52:52
【问题描述】:
我想实现一个 RxChain 用于以下目的:
一个可观察的源发出两种类型的数据(S,E)。现在我想要一个 observable/flowable,它会立即发出所有的 S,但如果同时没有 S 出现,它应该在 E 的第一次发射后的给定延迟(10 秒)后发出最新的 E。
【问题讨论】:
标签: java rx-java rx-android
我想实现一个 RxChain 用于以下目的:
一个可观察的源发出两种类型的数据(S,E)。现在我想要一个 observable/flowable,它会立即发出所有的 S,但如果同时没有 S 出现,它应该在 E 的第一次发射后的给定延迟(10 秒)后发出最新的 E。
【问题讨论】:
标签: java rx-java rx-android
您可以将它们拆分为 2 个可观察源,在“E 流”上添加 throttleLast 10s,然后将它们合并在一起,而不是让 1 个可观察源同时发射 S 和 E。
例如
Observable<String> sStream = source.filter(x -> x.type == Types.S);
Observable<String> eStream = source.filter(x -> x.type == Types.E).throttleLast(10, TimeUnit.SECONDS);
Observable.merge(sStream, eStream).subscribe(...);
【讨论】: