Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无显著返回值的链接观察值_Java_Android_Rx Java_Observable - Fatal编程技术网

Java 无显著返回值的链接观察值

Java 无显著返回值的链接观察值,java,android,rx-java,observable,Java,Android,Rx Java,Observable,我很高兴在我的应用程序中使用RxJava改装,但我不知道如何正确地链接网络呼叫,这些呼叫除了告诉我呼叫成功外,实际上不会返回任何东西 一个例子是将所有更新的项目发送到服务器的函数。首先我想调用loginManager.refreshLogin(),然后调用synchronizeInventories()和synchronizeItems(),等待它们都完成并返回指示可以更新UI的内容 现在,函数如下所示: public Observable<List<Object>> s

我很高兴在我的应用程序中使用RxJava改装,但我不知道如何正确地链接网络呼叫,这些呼叫除了告诉我呼叫成功外,实际上不会返回任何东西

一个例子是将所有更新的项目发送到服务器的函数。首先我想调用
loginManager.refreshLogin()
,然后调用
synchronizeInventories()
synchronizeItems()
,等待它们都完成并返回指示可以更新UI的内容

现在,函数如下所示:

public Observable<List<Object>> synchronize() {
    return loginManager.refreshLogin()
                    .flatMap(o -> Observable.merge(
                            synchronizeInventories(),
                            synchronizeItems()
                    ))
                    .toList();
}
公共可观测同步(){
返回loginManager.refreshLogin()
.flatMap(o->Observable.merge(
synchronizeInventories(),
synchronizeItems()
))
.toList();
}
refreshLogin()
返回
Observable.just(新对象())
synchronizeInventories()
synchronizeItems()
返回
Observable.empty()

现在一切都正常了,但我认为这不是正确的方法。

可观察的
被返回,因为
synchronizeInventories()
synchronizeItems()
返回不同类型的对象,因此
。merge()
返回一个
可观察的

如果两个方法返回相同的对象,则可能是一个特定的类,例如:

.flatMap(o -> Observable.merge(Observable.just("a"), Observable.just("b")))
.doOnNext(new Action1<String>() {
    @Override
    public void call(String s) {

    }
 })

您可以简单地使用
concat
来执行一系列的观察值

    final Observable flowObs = Observable.concat(obs1, obs2, obs3);
    flowObs.subscribe(); //will first execute the subscriber function on obs1, then on obs2, then on obs3

你到底认为什么是不对的?使用像Observable这样的东西来控制执行流程
    final Observable flowObs = Observable.concat(obs1, obs2, obs3);
    flowObs.subscribe(); //will first execute the subscriber function on obs1, then on obs2, then on obs3