gpt4 book ai didi

java - 在特定时间后调用 onNext 后发出一个值

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:17 24 4
gpt4 key购买 nike

我想在调用 onNext 后 10 秒发出一个随机值。所以 onNext 将被调用 12345,10 秒后 onNext 应该被调用以获得一个随机数。使用 RxJava 实现此目的的最佳方法是什么?提前致谢。

Observable.create(subscriber -> {
subscriber.onNext(12345);
}).subscribeOn(...)
.observeOn(...)
.subscribe(new Subscriber<Long>(){
@Override
public void onNext(Long aLong) {
//Do Something
}
})

最佳答案

如果您立即发出“12345”值,那么解决方案就很简单了。只需将此 observable 与 timer 合并,您就会得到这种行为。但是,我将假设您传递给 create 的 OnSubscribe 方法中的逻辑正在做一些工作,并且会在准备就绪后发出值(即网络请求)。在这种情况下,您需要同时利用 flatMapmerge 运算符。像这样的东西就足够了。

Observable.create(subscriber -> {
subscriber.onNext(12345);
})
.flatMap(value -> Observable.just(value)
.mergeWith(Observable.timer(10, TimeUnits.SECONDS).map(/* define your "random" value here */))
)
.subscribeOn(...)
.observeOn(...)
.subscribe(new Subscriber<Long>(){
@Override
public void onNext(Long aLong) {
//Do Something
}
})

它将获取您的值并将其转换为可观察值,它会立即发出该值并启动一个计时器 10 秒以发出其他值。

注意:请注意,这将获取您的可观察对象发出的每个项目,并为每个项目创建延迟的第二个响应。因此,如果您计划从源 Observable 发出多个值,则需要考虑到这一点。

关于java - 在特定时间后调用 onNext 后发出一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41935228/

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