getSomethingFromServer

getSomethingFromServer

RxJava查询:你好我有一个PublishSubject<Boolean> subject = PublishSubject.create();我正在订阅上述主题,并在此之后进行API调用:subject.observeOn(IOThread) .flatMap(boolean -> getSomethingFromServer()) .observeOn(MainThread) .subscribe(something -> showSomethingOnView(), error -> showRetryView(); )当出现UnknownHostException,SocketTimeoutException之类的错误时,我将显示一个重试按钮。单击重试按钮后,我正在向PublishSubject()发送事件。subject.onNext(boolean Value);但是在错误出现之后,主题正在终止,并且没有其他事件被转发。在快速搜索中,我可以使用Notification<>包装器实现此目标,但找不到应用它的好方法。我找到了两个链接:This link提到了Notification的用法。This link使用Notification,但将主体的初始类型(即Boolean)包装在Notification中。如何将我从getSomethingFromServer()收到的错误和响应包装到通知中。我在这里做错什么了吗?谢谢 最佳答案 得到了杰克沃顿的答案:“在flatMap内映射getSomethingFromServer()并添加一个onErrorResume*运算符封闭的流将永远不会终止.flatMap(b -> getSomethingFromServer() .map(response -> WrapperType.success(response)) .onErrorReturn(e -> WrapperType.error(e)))无论您想要什么WrapperType,Notification还是您自己的”也来自侯赛因·阿拉丁:https://twitter.com/Hussein_Ala“我以前没有使用Notification,但是我要做的是用事件类包装getSomethingFromServer()发出的所有内容。事件可以具有不同的状态“成功”,“错误”等,然后覆盖从onError也返回一个事件。最后,您可以在getSomethingFromServer()中处理不同的情况事件是您将创建的自定义类,您可以通过执行以下操作来覆盖onNextonError”所以这里的诀窍是getSomethingFromServer().onErrorReturn((Function<Throwable, Event>) throwable -> new Event(Event.ERROR, throwable))。
08-04 06:31