RxJava:按顺序调用多个不相关的方法

时间:2016-04-03 22:29:29

标签: java rx-java

我在我的项目中使用RxJava,我有一种情况,一个接一个地调用两个方法,并且都返回void。这些方法中的每一个都在内部使用RxJava。

伪:

void sendMsg_1() {
...
//Fetch data from DB using RxJava to send message to client.
..
}

void sendMsg_2() {
...
Uses RxJava to send message to client.
..
}

调用代码:

sendMsg_1();
sendMsg_2();

实际上,sendMsg_2更快,客户端在sendMsg_1发送他的消息之前获取它。这对我不好,我想在Msg2之前发送Msg1的输出。

怎么做?

我是否应该人为地返回虚拟可观察对象,以便我可以使用.flatMap如下:

sendMsg_1()
.flatMap(msgObj-> { 
    return sendMsg_2();
}).subscribe();

有更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是以rxJava的方式发出void方法的正确方法:

public rx.Completable func_A() {
    return Completable.create(subscriber -> {
        // func_A logic
        if(ok) subscriber.onCompleted();
        else subscriber.onError(throwable);
    });
}

func_A()
.doOnCompleted(() -> func_B())
.subscribe();

如果有人帮助......享受: - )