我有一个问题,关于哪种风格的java rx更适合使用。假设您有一个web服务,它返回一个项目列表,我们将用一个列表来表示。现在,大多数教程似乎通过通过Observable发出单个值来处理这个问题,例如:
Observable<Todo> todoObservable = Observable.create(new ObservableOnSubscribe<Todo>() {
@Override
public void subscribe(ObservableEmitter<Todo> emitter) throws Exception {
try {
List<Todo> todos = RxJavaUnitTest.this.getTodos();
for (Todo todo : todos) {
emitter.onNext(todo);
}
emitter.onComplete();
} catch (Exception e) {
emitter.onError(e);
}
}
});
但是,您可以通过single来处理这种情况,发出一个列表:
Single.create(new SingleOnSubscribe<List<Todo>>() {
@Override
public void subscribe(SingleEmitter<List<Todo>> emitter) throws Exception {
List<Todo> todos = RxJavaUnitTest.this.getTodos();
emitter.onSuccess(todos);
}
})
在整个列表中,每一项的发射有什么优势吗?在我看来,大多数情况下,你会希望将项目合并回用户界面中的列表…
最佳答案
如果从webservice获取数据,那么single就更有意义了。大多数情况下,您只需要一个响应实例。
Observable只有在您希望Web服务请求是流时才对您有益。因为大多数单身人士会用更少的开销满足你的需求。