我有以下代码
private void tryToLauch() {
try {
launch();
} catch (MyException e) {
postError(e.getErrorMessage());
e.printStackTrace();
}
}
如何将其转换为Rx,如果出现异常,它将在一段时间内重试?
答案 0 :(得分:2)
鉴于您的方法的返回类型为void,建议您使用Completable。
您可以使用RxJava 2尝试此解决方案
from enum import Enum
class Letter(Enum):
A = 1
B = 2
C = 3
print({i.name: i.value for i in Letter})
# prints {'A': 1, 'B': 2, 'C': 3}
然后订阅“完成”
Completable myCompletable = Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
launch();
}
}).retry(3 /*number of times to retry*/, new Predicate<Throwable>() {
@Override
public boolean test(Throwable throwable) throws Exception {
return throwable instanceof MyException;
}
});
希望这会有所帮助。