2016-07-02 15 views
0

私はRxJavaを新しく使いました。私はObservableを返すメソッド呼び出しをしたいと思います。非同期呼び出しを同期に変換するには?

これは、メソッドのシグネチャである:

JsonObject login(); 

私はこのような何かを試してみましたが、それはうまくいきませんでした:

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

どのように私はそれを動作させることができますか?

ありがとうございます。

+0

https://github.com/politrons/reactiveここで見てみますか?また、あなたはlogin()を呼び出す必要があると述べましたが、コードサンプルにはeventBus.sendObservable()コールがあります。それは何を返すのですか? – yurgis

答えて

0

設計によって観察は、任意の操作非同期をしたい場合は、特定の演算子のいずれかを使用する必要があり、同期である。(onSubscribe、onObserver、バッファ....)

また、あなたのテストのためのない限り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 
    } 

あなたは見にいくつかの基本的な例を取りたい場合は、具体的には(あなたが取得エラー)が動作しません何

+0

私はこれを完全に理解していません...あなたはlogin()呼び出しを行うために 'subscribe()'を使わなければなりません。そうでなければ、それは決して戻りません...(私は彼らが「冷たい観察可能」と呼んでいると思います)... – Shvalb

+0

観察可能なものを作成すると「冷たい」と呼ばれるので、オブザーバー、オブザーバーが熱心になり、実行が始まる瞬間 – paul

関連する問題