2017-06-17 13 views
0

FutureCallbackからObservableを作成する方法はありますか? Observable.createは推奨されておらず、そのための正しい方法ではありません(下記参照)。FutureCallback to Observable

私は

Observable.create(new Observable.OnSubscribe<HttpResponse>() { 
     @Override 
     public void call(Subscriber<? super HttpResponse> subscriber) { 
      getClient().execute(httpRequest, new FutureCallback<HttpResponse>() { 
       @Override 
       public void completed(HttpResponse response) { 
        subscriber.onNext(response); 
        subscriber.onCompleted(); 
       } 
       @Override 
       public void failed(Exception ex) { 
        subscriber.onError(ex); 
       } 
       @Override 
       public void cancelled() { 
        subscriber.onError(new Exception()); 
       } 
      }); 
     } 
}) 

答えて

2

が他のcreateoverloadを使用して変換しています:

Observable.<Event>create(emitter -> { 
    Callback listener = new Callback() { 
     @Override 
     public void onEvent(Event e) { 
      emitter.onNext(e); 
      if (e.isLast()) { 
       emitter.onCompleted(); 
      } 
     } 

     @Override 
     public void onFailure(Exception e) { 
      emitter.onError(e); 
     } 
    }; 

    AutoCloseable c = api.someMethod(listener); 

    emitter.setCancellation(c::close); 

}, BackpressureMode.BUFFER); 
+0

私はrxjava-1.2.7を使用していますし、この作成方法は、本番環境で使用することができない実験として注釈されています。 – joshu

+0

1.3.0にアップグレードしてください。 – akarnokd