我有一个问题,关于哪种风格的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服务请求是流时才对您有益。因为大多数单身人士会用更少的开销满足你的需求。

10-01 16:12