gpt4 book ai didi

java - 接收Java : Sleep before OnNext (Sleep before emitting from Observable)

转载 作者:行者123 更新时间:2023-11-30 05:25:57 25 4
gpt4 key购买 nike

根据我的 Observable 中的条件,我想延迟 onNext/onError。我的代码如下:

 fun check3(){
val list = arrayListOf(1,2,3,4,5,6,7, null)
val obs = Observable.create<Int> { subscriber ->
list.filter {
it != null
}.map {
if (it!! %2 == 0 ) {
Thread.sleep(3000)
subscriber.onError(IllegalArgumentException("Mod is true"))
} else {
subscriber.onNext(it)
subscriber.onComplete()
}
}
}
}

Thread.sleep(3000) 是这里的一个痛点

有更好的方法吗?基本上,如果满足 if(it %2) 条件,我想延迟向订阅者发送 onError 通知

最佳答案

您可以使用concatMap将 sleep 变成非阻塞延迟:

Observable.fromIterable(list.filter { it != null })
.concatMap {
if (it!! % 2 == 0) {
return@concatMap Observable.error(IllegalArgumentException("Mod is true"))
.delay(3, TimeUnit.SECONDS, true)
}
Observable.just(it)
}
.take(1)

关于java - 接收Java : Sleep before OnNext (Sleep before emitting from Observable),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58610325/

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