gpt4 book ai didi

android - RetryWhen与Single一起使用时出现一些问题

转载 作者:行者123 更新时间:2023-12-02 13:44:45 24 4
gpt4 key购买 nike

我正在尝试使用改型打API调用并接收该调用的响应。我正在使用Rxjava的Single获取响应。我需要做的是,如果 call 失败,请重试。
我看了很多例子,但似乎没有什么帮助(也是因为我对RXjava和Kotlin的了解有限)。

下面是执行调用的函数和我编写的retryWhen函数

fun testFetch(): Single<ResponseBody>{
return retrofitService.getCTLNetworkService().test().retryWhen {
val ato = AtomicInteger()
it.takeWhile {
ato.incrementAndGet() < 4
}.flatMap {
Flowable.timer(1, TimeUnit.MINUTES)
}
}
}

这正是我想要实现的
  Single.timer(1, TimeUnit.SECONDS)
* .doOnSubscribe(s -&gt; System.out.println("subscribing"))
* .map(v -&gt; { throw new RuntimeException(); })
* .retryWhen(errors -&gt; {
* AtomicInteger counter = new AtomicInteger();
* return errors
* .takeWhile(e -&gt; counter.getAndIncrement() != 3)
* .flatMap(e -&gt; {
* System.out.println("delay retry by " + counter.get() + " second(s)");
* return Flowable.timer(counter.get(), TimeUnit.SECONDS);
* });
* })
* .blockingGet();

下面是我编译代码时的错误
Type mismatch: inferred type is (Throwable!) -> Flowable<Long!>! but ((Throwable!) -> Publisher!)! was expected

注:为简单起见,更改了方法。即使是没有任何映射器和模型的简单signle<ResponseBody>调用,也会使失败

最佳答案

检查这个Gist Link

这是示例如何使用扩展

// 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") }

关于android - RetryWhen与Single一起使用时出现一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59856216/

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