RxJava2:retryWhen()的问题

时间:2017-06-25 17:11:49

标签: java android rx-java2

我尝试使用此blog post as a basisretryWhen链实施Completable操作,但我不断收到错误。我试图检查错误是否为HttpException,如果是,请刷新令牌并重试。链看起来像这样:

Completable c = ...;

c = c.retryWhen(errors -> errors.flatMap(error -> {
    if (error instanceof HttpExcetion) {
        return authHandler.refreshToken().flatMap(token -> Completable.complete());
    }
    return Completable.error(error);
}));

然而,这不会编译,我只是无法弄清楚我在这里做错了什么。由于我使用RxJava 2,我不应该像在文章中那样发出null,但这似乎无论如何都无法解决问题。我甚至尝试了一个更简单的版本,基本上直接从该文章中复制并将Observable替换为Completable

c.retryWhen(errors -> errors.flatMap(error -> {
        return Completable.timer(5, TimeUnit.SECONDS);
    }));

这也不会编译。错误是这样的:

Error:(31, 51) error: incompatible types: cannot infer type-variable(s) R
(argument mismatch; bad return type in lambda expression
Completable cannot be converted to Publisher<? extends R>)
where R,T are type-variables:
R extends Object declared in method <R>flatMap(Function<? super T,? extends Publisher<? extends R>>)
T extends Object declared in class Flowable

知道这里发生了什么吗?

0 个答案:

没有答案