android - 为什么“doOnError”在“err->{}”没有传递给“subscribe()”方法之前不起作用
问题描述
我有以下转换功能:
private MutableLiveData<ApiError> apiError = new MutableLiveData<>();
private MutableLiveData<ApiProgress> apiProgress = new MutableLiveData<>();
private CompositeDisposable compositeDisposable = new CompositeDisposable();
// Emit "progress's start" on subscribe and "progress's end" on after success or error.
// Add this to the observable action sequence with ".compose(baseTransformer())" before subscribe.
<T> SingleTransformer<T, T> baseTransformer() {
return upstream -> upstream
.doOnSubscribe(disposable -> {
compositeDisposable.add(disposable);
apiProgress.setValue(ApiProgress.start());
})
.doFinally(() -> apiProgress.setValue(ApiProgress.stop()))
.doOnError(err -> {
apiError.setValue(ApiError.create(err));
});
}
我在这里使用这个功能:
authRepository.login(userName, password)
.compose(baseTransformer())
.subscribe(login -> {
loginData.setValue(login);
});
问题:我的应用程序在尝试登录时崩溃。 解决方案
authRepository.login(userName, password)
.compose(baseTransformer())
.subscribe(login -> {
loginData.setValue(login);
}, err -> {});
我不知道为什么它解决了这个问题,因为“doOnError”不应该依赖这个 lambda("err -> {}") 来捕获错误。
请提出任何替代方案。
解决方案
推荐阅读
- sql - 用逗号分隔列,忽略空值
- html - 我正在开发一个关于 codepen 的网页,并希望在我的网页上包含存储在我的设备上的图像。我将什么作为图像源?
- pandas - 带有 FixedForwardWindowIndexer 的 Pandas groupby 使内核在小型 DataFrame 中崩溃
- axis2 - Web 服务安全用户名令牌配置文件中的自定义令牌
- python - 从列中获取一个元素,如果等于某个元素,则将其放在 python 的另一列中
- javascript - React+Redux:TypeError:无法读取 null 的属性“地址”
- swiftui - 类型“SwiftUIWebView”不符合协议“NSViewRepresentable”
- teradata - tera 数据中的 fastexport 错误消息“只允许一个语句”
- javascript - 如何在没有按钮的情况下调用一次 Axios 响应
- mysql - 在不同的表中使用 count 和 sum