Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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
RxJava队列多观测值_Java_Android_Queue_Rx Java - Fatal编程技术网

RxJava队列多观测值

RxJava队列多观测值,java,android,queue,rx-java,Java,Android,Queue,Rx Java,我有许多可观察的方法。我想在之前的比赛结束后再跑下一个 甲级 我想一个接一个地运行它。。。最难的是:我不能改变B班。为了达到我的目标,我必须改变A班。有什么想法吗 我可以使用flatMat(…)或concatMap(…)在B级中完成,但我无法更改B级它看起来很糟糕,但应该可以完成任务。Sempahore将确保只有一个线程处理数据。请注意,此解决方案不能保证操作顺序 public class A { private final Semaphore semaphore = new Sem

我有许多可观察的方法。我想在之前的比赛结束后再跑下一个

甲级 我想一个接一个地运行它。。。最难的是:我不能改变B班。为了达到我的目标,我必须改变A班。有什么想法吗


我可以使用
flatMat(…)
concatMap(…)
B级中完成,但我无法更改B级

它看起来很糟糕,但应该可以完成任务。Sempahore将确保只有一个线程处理数据。请注意,此解决方案不能保证操作顺序

public class  A {

    private final Semaphore semaphore = new Semaphore(1);

    public Observable<String> method1() {
        try {
            semaphore.acquire();
            // complex stuff (10 sec)
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    public Observable<String> method2() {
        try {
            semaphore.acquire();
            // another complex stuff (10 sec)
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
公共A类{
专用最终信号量信号量=新信号量(1);
公共可观察方法1(){
试一试{
semaphore.acquire();
//复杂材料(10秒)
}捕捉(中断异常e){
e、 printStackTrace();
}
}
公共可观察方法2(){
试一试{
semaphore.acquire();
//另一个复杂的东西(10秒)
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}

“我想在之前的完成之后运行下一个。”你这么说是什么意思?也许我在这里弄错了,但你的需求“转化”成了某种与整个RxJava可观察想法相矛盾的东西吗?当你依赖于事情按顺序完成时,异步/无序地做事情有什么意义?@GhostCat No.
method1()
method2()
通过点击按钮调用。此外,这些方法正在编辑相同的数据<如果
method1()
执行特定的操作(数据库已更改),则code>method2()可以执行不同的操作。虽然上下文对此要求不是很清楚,但创建新方法并通过method1、method2等来调用它们不是很简单吗?我无法理解,如果按钮点击调用了method1和method2,那么当有人点击按钮2eg时,我们将如何以及为什么希望method1在method2之后执行。method1()->从服务器获取一页信息-插入数据库。method2()->在屏幕上显示所有信息。如果我们一个接一个地做,那么:getFirstPage->showThisPage->getSecPage->GetHirdPage。正如你们所看到的,若用户第三次点击第一个按钮,那个么我将第三次请求第一页。
foo.method1().subscribe(...);
foo.method2().subscribe(...);
foo.method1().subscribe(...);
foo.method1().subscribe(...);
public class  A {

    private final Semaphore semaphore = new Semaphore(1);

    public Observable<String> method1() {
        try {
            semaphore.acquire();
            // complex stuff (10 sec)
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    public Observable<String> method2() {
        try {
            semaphore.acquire();
            // another complex stuff (10 sec)
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}