我正在使用RxJava并嵌套Observables,如下所示。我想在另一个observable中调用一个observable,并让外部observable发出内部observable onNext的结果。它似乎有效,但我不确定这是正确的实现,因为我无法找到任何文件来确认。
public Observable<User> updateUser(final String id) {
return Observable.create(new Observable.OnSubscribe<User>() {
@Override
public void call(final Subscriber<? super User> observer) {
try {
if (!observer.isUnsubscribed()) {
getUser(id).subscribe(new Action1<User>() {
@Override
public void call(User user) {
observer.onNext(user);
observer.onCompleted();
}
});
}
} catch (Exception e) {
observer.onError(e);
}
}
});
}
public Observable<User> getUser(final String id) {
...
}
答案 0 :(得分:0)
当您进行subscribe
转换时,请避免调用Observable
,因为您必须注意@akarnokd和@zsxwing在评论中提到的所有问题。
我也会避免使用Observable.create
,因为创建OnSubscribe
实现涉及考虑背压以及随之而来的并发棘手业务。首选Observable.just
,Observable.from
,Observable.range
,Observable.defer
,Observable.using
(还有更多,请查看维基),为了更高级的目的,请实施SyncOnSubscribe
此代码可能涵盖您的用例:
public Observable<User> updateUser(final String id) {
return getUser(id).doOnNext(user -> updateUser(user));
}
public void updateUser(User user) {
//whatever you want here
}
public Observable<User> getUser(final String id) {
...
}