Подписка на Scheduler
указать Scheduler, на котором будет работать Observable
Многие реализации ReactiveX используют “Schedulers”, чтобы управлять переходами Observable между потоками в многопоточной среде. Вы можете указать Observable на работу на конкретном Scheduler, вызвав оператор SubscribeOn Observable.
Оператор ObserveOn аналогичен, но ограничен. Он указывает Observable отправлять уведомления наблюдателям на указанном Scheduler.
В некоторых реализациях также есть оператор UnsubscribeOn.
По умолчанию Observable и цепочка операторов, которые к нему применяются, выполняют свою работу и уведомляют своих наблюдателей в том же потоке, в котором вызывается метод Subscribe. Оператор SubscribeOn изменяет это поведение, указав другой Scheduler для работы Observable. Оператор ObserveOn указывает другой Scheduler, который Observable будет использовать для отправки уведомлений своим наблюдателям.
Как показано на этой иллюстрации, оператор SubscribeOn определяет, в каком потоке Observable начнёт работать, независимо от того, в какой точке цепочки операторов этот оператор был вызван. ObserveOn, с другой стороны, влияет на поток, который Observable будет использовать *ниже*, где этот оператор появляется. По этой причине вы можете вызывать ObserveOn несколько раз в различных точках цепочки операторов Observable, чтобы изменить, в каких потоках работают некоторые из этих операторов.
См. также
Scheduler- ObserveOn
- Rx Workshop: Schedulers
- RxJava Threading Examples by Graham Lea
- Введение в Rx: SubscribeOn и ObserveOn
- Async Abstractions using rx-java by Biju Kunjummen, DZone
- RxJava: Понимание observeOn() и subscribeOn() by Thomas Nield
- Advanced Reactive Java: SubscribeOn и ObserveOn by Dávid Karnok
Информация, специфичная для языка
RxGroovy subscribeOn unsubscribeOn
Чтобы указать, на каком Scheduler должен работать Observable, используйте оператор subscribeOn, передав ему соответствующий Scheduler.
- Javadoc:
subscribeOn(Scheduler)
Чтобы указать, какой Scheduler наблюдатели будут использовать для отписки от Observable, используйте оператор unsubscribeOn, передав ему соответствующий Scheduler.
- Javadoc:
unsubscribeOn(Scheduler)
RxJava 1․x subscribeOn unsubscribeOn
Чтобы указать, на каком Scheduler должен работать Observable, используйте оператор subscribeOn, передав ему соответствующий Scheduler.
- Javadoc:
subscribeOn(Scheduler)
Чтобы указать, какой Scheduler наблюдатели будут использовать для отписки от Observable, используйте оператор unsubscribeOn, передав ему соответствующий Scheduler.
- Javadoc:
unsubscribeOn(Scheduler)
RxJS subscribeOn
Чтобы указать, на каком Scheduler должен работать Observable, используйте оператор subscribeOn, передав ему соответствующий Scheduler.
Пример кода
/* Change from immediate scheduler to timeout */
var source = Rx.Observable.return(42, Rx.Scheduler.immediate)
.subscribeOn(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
subscribeOn представлен в каждом из следующих дистрибутивов:
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/subscribeon.html