我有一堆觀察對象,我在一個方法中運行/訂閱(大約9個確切的),它本身返回一個可觀察值。爲了這個問題的目的,我把它縮小到2個觀察值。這是我創建的方法,它返回一個包含其他可觀察對象的Observable。使用多個observables創建可觀察?
public static Observable<MyCustomObject> runAll(Service networkService) {
return Observable.create(subscriber -> {
networkService.getOne().subscribe(response -> {
Request request = response.raw().request();
MyCustomObject case = new MyCustomObject(request);
subscriber.onNext(case);
}, exception -> {
throw new OnErrorNotImplementedException(exception);
});
networkService.getTwo().subscribe(response -> {
Request request = response.raw().request();
MyCustomObject case = new MyCustomObject(request);
subscriber.onNext(case);
}, exception -> {
throw new OnErrorNotImplementedException(exception);
});
subscriber.onComplete();
});
}
我然後使用可觀察到的是所返回......
runAll(networkService)
.subscribeOn(Schedulers.io())
.subscribe(case -> {
//do stuff
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
//handle error
}
});
我不知道如果我正確地創建一個可觀察的。我基本上用Observable替換了我之前在這裏的一個監聽器/接口,但是我知道使用Observable.create()是不容易的。我應該以另一種方式去做嗎?做我在做什麼有什麼不對嗎?
編輯:getOne()和getTwo()是網絡調用,所以他們返回Observables。
編輯2:目前有這樣的
public static Observable<MyCustomObject> quickRun(Service networkService) {
return Observable.concat(
networkService.getOne().map(response -> {
Request request = response.raw().request();
MyCustomObject case = new MyCustomObject(request);
return case;
}),
networkService.getTwo().map(response -> {
Request request = response.raw().request();
MyCustomObject case = new MyCustomObject(request);
return case;
})
);
}
是否所有9個'Observable's返回相同的類型?他們互相依賴,還是可以獨立運行? –
可能有一個observable返回一個不同的類型,但大多數情況下我可以使它工作(我可以將兩個結果都包裝在另一個類型或其他類型中),並且每個都可以獨立運行。 – EGHDK