import rx.Single;
public class RetryTest {
public static void main(String[] args){
Single.just(getStr())
.map(str -> {
System.out.println(str);
System.out.println(getNtr().toString());
return str;
}).retry(3).subscribe();
}
private static String getStr() {
System.out.println("In First");
return "Hello";
}
private static String getNtr() {
System.out.println("In First");
return null;
}
}
这将产生预期的输出。它从getStr()然后再从getNtr()一直重试。
In First
Hello
In First
Hello
In First
Hello
In First
Hello
然后抛出异常。但是,当我将地图更改为flatMap时,仅重试flatMap中的Single(这会引发错误)。我该如何重试整个单曲?
import rx.Single;
public class RetryTest {
public static void main(String[] args){
Single.just(getStr())
.flatMap(str -> {
System.out.println(str);
return Single.error(new Exception());
}).retry(3).subscribe();
}
private static String getStr() {
System.out.println("In First");
return "Hello";
}
private static String getNtr() {
System.out.println("In First");
return null;
}
}
输出:
In First
Hello
Hello
Hello
Hello
我希望它从第一张单曲中重试,而不是引发错误的单曲。我该如何实现?