我试图在我的Observable上实现retryWhen,当出现timeot时,但我在IDE Android Studio 3.0中有一些奇怪的错误
代码如下:
rxRssiRepository.onRssiUpdate() //returns Observable<RssiEvent>
.timeout(10, TimeUnit.MILLISECONDS)
.retryWhen { t: Observable<Throwable> ->
t.flatMap { error: Throwable ->
if (error is TimeoutException) {
stopLocationUpdates()
Log.v("TIMEOUT", "TIMEOUT RSSI EVENTS")
Observable.just(Observable.empty())
} else {
Observable.error(error)
}
}
}
.concatMap { t: RssiEvent ->
appendRssiEvent(t)
}
.publish()
IDE在红色上加下划线。flatMap运算符并表示:
类型推断失败:没有足够的信息来推断中的参数R
趣味平面图
(
映射器:((t:Throwable)observesource)!
:可见!
请明确说明。
“if”运算符相同:
控制流表达式的类型推断失败。请明确指定其类型
对于操作员。只是:
类型推断失败:没有足够的信息来推断中的参数T
有趣只是
(
项目:T!
)
:可见!
请明确说明。
对于操作员。空:
类型推断失败:没有足够的信息来推断中的参数T
有趣只是
(
项目:T!
)
:可见!
请明确说明。
对于。错误运算符:
类型推断失败:没有足够的信息来推断中的参数T
有趣的错误
(
例外:可丢弃!
)
:可见!
请明确说明。
如何修复此问题?
我的意思是,Java中也有这段代码:
How to add a timeout to detect that an Observable didn't emit for a while
但是,当我将其转换为类似于Kotlin时,它给了我所描述的情况问题