gpt4 book ai didi

java - 如何在不重新订阅的情况下替换 Flowable

转载 作者:行者123 更新时间:2023-12-01 19:33:01 29 4
gpt4 key购买 nike

我有一个返回 Flowable 的函数接口(interface)

interface Iface{
Flowable<Int> get();
}

现在让我们假设具体实现是:

class IFaceImpl{
int noOfSecs = 1;
Flowable<Int> get(){
return Flowable.interval(noOfSecs,TimeUnit.SECONDS)
}
}

我希望能够更改 noOfSecs 参数,使 Flowable.interval 每 2 秒生成一次事件,而不是 1 秒。当客户只需重新订阅时,这会很容易。就我而言,我不能这样做,我希望客户端只订阅一次,但能够更改 Flowable 的发射频率。

做这样的事情的最好方法是什么?

最佳答案

使用 switchMap 动态停止先前的间隔并开始新的间隔。

class IfaceImpl {
final Subject<Long> nextInterval =
BehaviorSubject.createDefault(1)
.toSerialized();

Flowable<Long> get() {
return nextInterval.switchMap(seconds ->
Flowable.interval(seconds, TimeUnit.SECONDS)
);
}

void setNumberOfSeconds(int seconds) {
nextInterval.onNext(seconds);
}
}

关于java - 如何在不重新订阅的情况下替换 Flowable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58990234/

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