2016-08-15 2 views
1

나는 RxJava를 좀 익숙하게하고있다. 그러나 나는 그것을 배우려고 노력하고있다. 그러나이 경우에는 변경할 수없는 코드가 있으며 간단한 콜백 모델을 사용합니다. 그러나 콜백은 직접 호출되지 않으며 매개 변수화 할 수 없지만 Observables를 사용하고 싶습니다. 기본적인 예제는 observable을 반환하고 백그라운드 작업을 시작하는 myFunc()를 호출하는 것입니다. 그런 다음 백그라운드 작업이 myCallback에 반환됩니다. 내가 원하는 것은 그 결과로 onNext를 호출 한 다음 그 결과로 무언가를 할 수 있습니다. 나는 무엇을 사용해야할지 모르겠다. 이것은 주제와 관련이 있는가? PublishSubject에서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<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

관련 문제