我在我的项目中使用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();
有更好的方法吗?
谢谢!
答案 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();
如果有人帮助......享受: - )