ObserveOn
указать планировщик, на котором наблюдатель будет наблюдать за этим Observable
Многие реализации ReactiveX используют “Scheduler”, чтобы управлять переходами Observable между потоками в многопоточной среде. Вы можете указать Observable, чтобы он отправлял свои уведомления наблюдателям на конкретный планировщик с помощью оператора ObserveOn.
Обратите внимание, что ObserveOn будет немедленно пересылать уведомление о завершении onError, если получит его, и не будет ждать, пока медленный наблюдатель получит все ещё не отправленные элементы, о которых он знает. Это может означать, что уведомление о onError уведомлении опередит (и поглотит) элементы, исходящие из исходного Observable, как показано на диаграмме выше.
Оператор SubscribeOn похож, но он инструктирует Observable действовать сам на указанном планировщике, а также уведомлять своих наблюдателей на этом планировщике.
По умолчанию Observable и цепочка операторов, которые вы к нему применяете, будут выполнять свою работу и уведомлять своих наблюдателей в том же потоке, в котором вызов метода Subscribe. Оператор SubscribeOn меняет это поведение, указывая другой планировщик, на котором Observable должен действовать. Оператор ObserveOn указывает другой планировщик, который Observable будет использовать для отправки уведомлений своим наблюдателям.
Как показано на этой иллюстрации, оператор SubscribeOn определяет, в каком потоке Observable начнёт свою работу, независимо от того, в какой точке цепочки операторов он был вызван. ObserveOn, с другой стороны, влияет на поток, который Observable будет использовать ниже оператора. По этой причине вы можете вызывать ObserveOn несколько раз в различных точках цепочки операторов Observable, чтобы изменить, на каких потоках работают некоторые из этих операторов.
См. также
Scheduler- SubscribeOn
- Rx Workshop: Планировщики
- Примеры многопоточности RxJava Грэма Ли
- Введение в Rx: SubscribeOn и ObserveOn
- RxJava: Понимание observeOn() и subscribeOn() Томаса Нилда
- Расширенное реактивное Java: SubscribeOn и ObserveOn Давида Карнока
Сведения, специфичные для языка
RxGroovy observeOn
Для указания планировщика, на котором Observable должен вызывать методы своих наблюдателей onNext, onCompleted, и onError, используйте оператор observeOn, передавая ему соответствующий планировщик Scheduler.
- Javadoc:
observeOn(Scheduler)
RxJava 1․x observeOn
Для указания планировщика, на котором Observable должен вызывать методы своих наблюдателей onNext, onCompleted, и onError, используйте оператор observeOn, передавая ему соответствующий планировщик Scheduler.
- Javadoc:
observeOn(Scheduler)
RxJS observeOn
Для указания планировщика, на котором Observable должен вызывать методы своих наблюдателей onNext, onCompleted, и onError, используйте оператор observeOn, передавая ему соответствующий планировщик Scheduler.
Пример кода
/* Change from immediate scheduler to timeout */
var source = Rx.Observable.return(42, Rx.Scheduler.immediate)
.observeOn(Rx.Scheduler.timeout);
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); }); Next: 42 Completed
observeOn можно найти в каждом из следующих распределений:
rx.jsrx.all.jsrx.all.compat.jsrx.compat.jsrx.lite.jsrx.lite.compat.js
© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/observeon.html