pri*_*vex 8 java android reactive-programming rx-java rx-java2
我在我的android项目中使用RxJava2.
我正在使用以下代码来创建 Observable
public Observable<AlbumDetails> loadAlbumFromAlbumId(final String albumId) {
return Observable.fromCallable(new Callable<AlbumDetails>() {
@Override
public AlbumDetails call() throws Exception {
AlbumDetails albumDetails = getAlbumDetails(albumId);
return albumDetails;
});
}
Run Code Online (Sandbox Code Playgroud)
从observable,我在DisposableObserver的onError方法中遇到以下错误
Callable returned null
使用RxJava时不会发生这种情况.
我曾经有这样的代码:
Observable<R> obs = Observable.fromCallable(this::work);
Run Code Online (Sandbox Code Playgroud)
work()可能会返回,null并且如您所述,RxJava 2对此不满意。
Observable<R> obs = Maybe.fromCallable(this::work).toObservable();
Run Code Online (Sandbox Code Playgroud)
这样,最终用户(观察者)只有在work()有任何可返回的东西时才开始。如果work()返回null,则与订阅一个空的Observer相同;没发生什么事。
Observable<R> obs = Observable.create(e -> {
R r = work();
if (r != null) {
e.onNext(r);
}
e.onComplete();
});
Run Code Online (Sandbox Code Playgroud)
Optional由于种种原因,将每个排放都包装成一个坏主意。
主要是因为我仅在期望的情况下在我的API中使用Optional,并且在某种“正常”情况下,您有时会得到null。如果不是预期的或非常少的null,可能是由于同一使用者执行另一个API调用的直接结果,那么我返回null并让使用者在这些特殊情况下处理它,而不是让每个使用者都在整个过程中处理Optional。地点。
| 归档时间: |
|
| 查看次数: |
7392 次 |
| 最近记录: |