2016-08-15 149 views
1

我對RxJava有點新,但我正在努力學習它。在這種情況下,我有一個我不能改變的代碼,它使用了一個簡單的回調模型。但回調不直接調用,我不能參數化,但我仍然想使用Observables。基本的例子是,我打電話myFunc()返回一個可觀察的,並開始後臺操作。然後,該後臺操作將在myCallback中返回。我想要的是然後調用onNext和結果然後我可以做一些結果。我只是不確定要使用什麼,這是否與受試者有關?RxJava:在不改變的情況下將回調變爲Observable

private void doStuff() { 
    myFunc().subscribe(new Action1<Object>() { 
     @Override 
     public void call(Object o) { 
      System.out.println("DO SOMETHING WITH THE RESULT"); 
     } 
    }); 
} 

private void myCallback(Object result) { 
    [SOMETHING].onNext(result); 
} 

private Observable<Object> myFunc() { 
    //Do stuff which will return in myCallback 
    return [SOMETHING] 
} 

回答

3

PublishSubject

PublishSubject<T> subject = PublishSubject.create(); 
subject 
    // run in background 
    .subscribeOn(Schedulers.computation()) 
    .doOnNext(item -> doSomething(item)) 
    //make sure you log errors somewhere! 
    .subscribe(subscriber); 

訂閱建立後:

subject.onNext(item1); 
subject.onNext(item2); 
subject.onCompleted(); 
+0

謝謝,我發現它在此期間,但是,是和我一樣的:) – breakline

相關問題