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, то повторяется только Single в flatMap (который выдает ошибку).Как я могу заставить его повторить весь сингл?
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
Я хочу, чтобы он повторил попытку с первого сингла, а не с сингла, вызвавшего ошибку.Как я могу это сделать?