2016-08-15 147 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

相关问题