#rx-java2
#rx-java2
Вопрос:
Есть три наблюдателя A, B, C
Сначала выполните наблюдателя A и отправьте данные, полученные наблюдателем A
Затем выполните наблюдателя B без отправки данных
Наконец, запустите C observer и отправьте данные, полученные C observer
Как этого добиться с помощью Rxjava?
Observable A = Observable.create(new ObservableOnSubscribe<List<T>>() {
@Override
public void subscribe(ObservableEmitter<List<T>> emitter) throws Throwable {
T data;
...
emitter.onNext(data);
emitter.onComplete();
}
}).subscribeOn(Schedulers.io());
Observable B = Observable.create(new ObservableOnSubscribe<List<T>>() {
@Override
public void subscribe(ObservableEmitter<List<T>> emitter) throws Throwable {
//no need to call onNext
...
emitter.onComplete();
}
}).subscribeOn(Schedulers.io());
Observable C = Observable.create(new ObservableOnSubscribe<List<T>>() {
@Override
public void subscribe(ObservableEmitter<List<T>> emitter) throws Throwable {
T data;
...
emitter.onNext(data);
emitter.onComplete();
}
}).subscribeOn(Schedulers.io());
A, B, C используют один и тот же наблюдатель
Комментарии:
1. Что такое
Observable
s? КудаObserver
s отправляют данные? Пожалуйста, уточните свой вопрос.2. Я добавил псевдокод, пожалуйста, помогите мне увидеть
Ответ №1:
Вы можете просто Observable
объединить 3 секунды и получить каждую List<T>
из них через одного и того же наблюдателя:
Observable<List<T>> A = ...
Observable<List<T>> B = ...
Observable<List<T>> C = ...
Observable.concat(A, B, C)
.subscribe(list -> {
// process each list from A, B, C in order
});