RxJava:在不改变的情况下将回调转换为 Observable
RxJava: turn a callback into an Observable without changing
我对 RxJava 有点陌生,但我正在努力学习它。然而,在这种情况下,我有一个我无法更改的代码,它使用一个简单的回调模型。但是回调没有直接调用,我不能参数化它,但我仍然想使用 Observables。基本示例是,我将调用 myFunc() ,其中 return 是一个可观察对象并启动后台操作。然后该后台操作将在 myCallback 中 return。我想要的是然后用结果调用 onNext 然后我可以对结果做一些事情。我只是不确定该用什么,这与主题有关吗?
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]
}
看看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();
我对 RxJava 有点陌生,但我正在努力学习它。然而,在这种情况下,我有一个我无法更改的代码,它使用一个简单的回调模型。但是回调没有直接调用,我不能参数化它,但我仍然想使用 Observables。基本示例是,我将调用 myFunc() ,其中 return 是一个可观察对象并启动后台操作。然后该后台操作将在 myCallback 中 return。我想要的是然后用结果调用 onNext 然后我可以对结果做一些事情。我只是不确定该用什么,这与主题有关吗?
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]
}
看看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();