如何将异步调用转换为同步?

时间:2016-07-02 01:24:09

标签: java rx-java

我是RxJava的新手,我想做一个方法调用,返回一个Observable,同步。

这是方法签名:

JsonObject login();

我尝试过类似的东西,但它不起作用:

public JsonObject login() {
    return eventBus
    .sendObservable(...)
    .toBlocking().first().body();
}

我怎样才能让它发挥作用?

谢谢。

1 个答案:

答案 0 :(得分:0)

按设计可观察是同步的,如果你想要任何操作异步你必须使用一个特定的操作符。(onSubscribe,onObserver,buffer ....)

另外不要使用toBlocking,除非你的测试几乎是反模式,试着改用Observer模式。

     public void main(String args[]){

         login().subscribe(jsonObject-> do Whatever you need);
     }


     public Observable<JsonObject> login() {
        return eventBus.sendObservable(...) --> I guess this call return an Observable
     }

如果您想查看一些基本示例,请查看https://github.com/politrons/reactive