Android RetryWhen在与Single一起使用时出现了一些问题
我正在尝试使用改装来点击一个API调用,并从调用中接收响应。我正在使用Rxjava的单个函数来获得响应。我需要做的是,如果呼叫失败,请重试。 我看过很多例子,但似乎没有一个能帮上忙(也因为我对RXjava和Kotlin的知识有限) 下面是执行调用的函数和我编写的Android RetryWhen在与Single一起使用时出现了一些问题,android,kotlin,rx-java,rx-java2,Android,Kotlin,Rx Java,Rx Java2,我正在尝试使用改装来点击一个API调用,并从调用中接收响应。我正在使用Rxjava的单个函数来获得响应。我需要做的是,如果呼叫失败,请重试。 我看过很多例子,但似乎没有一个能帮上忙(也因为我对RXjava和Kotlin的知识有限) 下面是执行调用的函数和我编写的retryWhen函数 fun testFetch(): Single<ResponseBody>{ return retrofitService.getCTLNetworkService().test().retry
retryWhen
函数
fun testFetch(): Single<ResponseBody>{
return retrofitService.getCTLNetworkService().test().retryWhen {
val ato = AtomicInteger()
it.takeWhile {
ato.incrementAndGet() < 4
}.flatMap {
Flowable.timer(1, TimeUnit.MINUTES)
}
}
}
下面是我编译代码时的错误
Type mismatch: inferred type is (Throwable!) -> Flowable<Long!>! but ((Throwable!) -> Publisher!)! was expected
类型不匹配:推断的类型是(可丢弃的!)->可流动的!但是((可丢弃!)->出版商!)!预料之中
注意:为了简单起见更改了方法。即使是一个没有任何映射器和模型的简单的single
调用也会失败请检查此项
下面是如何使用扩展的示例
// import extension file
import com.vk.extension.retryWhenError
// example
Observable.fromIterable<Int>(Arrays.asList(1, 2, 3)).retryWhen { it.retryWhenError()}
.subscribe { integers: Int -> Log.d(TAG, "item $integers") }
//导入扩展文件
导入com.vk.extension.retrywhen错误
//范例
Observable.fromIterable(Arrays.asList(1,2,3)).retryWhen{it.retryWhenError()}
.subscribe{integers:Int->Log.d(标记“item$integers”)}
检查此项
下面是如何使用扩展的示例
// import extension file
import com.vk.extension.retryWhenError
// example
Observable.fromIterable<Int>(Arrays.asList(1, 2, 3)).retryWhen { it.retryWhenError()}
.subscribe { integers: Int -> Log.d(TAG, "item $integers") }
//导入扩展文件
导入com.vk.extension.retrywhen错误
//范例
Observable.fromIterable(Arrays.asList(1,2,3)).retryWhen{it.retryWhenError()}
.subscribe{integers:Int->Log.d(标记“item$integers”)}
请编辑您的帖子,并添加映射器/模型类。我尝试使用您的代码重新创建一个示例,当它只使用Observable时,它会编译得更精细。对于single,无法重新订阅,因此无法使用single。请编辑您的帖子并添加映射器/模型类。我尝试使用您的代码重新创建一个示例,当它只使用Observable时,它会编译得更精细。对于单曲,没有办法重新订阅,所以它对单曲不起作用。我不同意。如果是这样的话,那么为什么Rxjava的单个类在它的retryWhen方法中给出了一个示例我不同意。如果是这样,那么为什么Rxjava的单个类在它的retryWhen方法中给出了一个示例