Spec-Zone.ru › ReactiveX

ObserveOn

указать планировщик, на котором наблюдатель будет наблюдать за этим Observable
ObserveOn

Многие реализации ReactiveX используют “Scheduler”, чтобы управлять переходами Observable между потоками в многопоточной среде. Вы можете указать Observable, чтобы он отправлял свои уведомления наблюдателям на конкретный планировщик с помощью оператора ObserveOn.

ObserveOn

Обратите внимание, что ObserveOn будет немедленно пересылать уведомление о завершении onError, если получит его, и не будет ждать, пока медленный наблюдатель получит все ещё не отправленные элементы, о которых он знает. Это может означать, что уведомление о onError уведомлении опередит (и поглотит) элементы, исходящие из исходного Observable, как показано на диаграмме выше.

ObserveOn and SubscribeOn

Оператор 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

observeOn

Для указания планировщика, на котором Observable должен вызывать методы своих наблюдателей onNext, onCompleted, и onError, используйте оператор observeOn, передавая ему соответствующий планировщик Scheduler.

  • Javadoc: observeOn(Scheduler)

RxJava 1․x observeOn

observeOn

Для указания планировщика, на котором Observable должен вызывать методы своих наблюдателей onNext, onCompleted, и onError, используйте оператор observeOn, передавая ему соответствующий планировщик Scheduler.

  • Javadoc: observeOn(Scheduler)

RxJS observeOn

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.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js

© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/observeon.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API