TakeUntil
отбрасывать любые элементы, испускаемые Observable после того, как другой Observable испустит элемент или завершит работу
Оператор TakeUntil подписывается и начинает зеркальное отображение исходного Observable. Он также отслеживает второй Observable, который вы предоставляете. Если этот второй Observable испускает элемент или отправляет уведомление о завершении, Observable, возвращаемый оператором TakeUntil, прекращает зеркальное отображение исходного Observable и завершается.
См. также
- Skip
- SkipLast
- SkipUntil
- SkipWhile
- Take
- TakeLast
- TakeWhile
- Введение в Rx: SkipUntil и TakeUntil
- RxMarbles:
takeUntil
Информация, специфичная для языка
RxGroovy takeUntil
В RxGroovy этот оператор реализован как takeUntil. Обратите внимание, что второй Observable может заставить takeUntil прекратить испускание элементов, либо испустив элемент, либо выдав уведомление о onError или onCompleted.
takeUntil по умолчанию не работает с каким-либо конкретным Планировщиком.
- Javadoc:
takeUntil(Observable)
Вторая версия этого оператора была выпущена в RxGroovy 1.1. Она использует предикатную функцию, которая оценивает элементы, испускаемые исходным Observable, для завершения последовательности Observable. Таким образом, она ведет себя аналогично оператору TakeWhile.
- Javadoc:
takeUntil(Func1)(RxGroovy 1.1)
RxJava 1․x takeUntil
В RxJava этот оператор реализован как takeUntil. Обратите внимание, что второй Observable может заставить takeUntil прекратить испускание элементов, либо испустив элемент, либо выдав уведомление о onError или onCompleted.
takeUntil по умолчанию не работает с каким-либо конкретным Планировщиком.
- Javadoc:
takeUntil(Observable)
Вторая версия этого оператора была выпущена в RxJava 1.1. Она использует предикатную функцию, которая оценивает элементы, испускаемые исходным Observable, для завершения последовательности Observable. Таким образом, она ведет себя аналогично оператору TakeWhile.
- Javadoc:
takeUntil(Func1)(RxJava 1.1)
RxJS takeUntil
RxJS реализует оператор takeUntil. Вы можете передать ему либо Observable, либо Promise, за которым он будет следить, чтобы получить элемент, вызывающий takeUntil прекратить зеркальное отображение исходного Observable.
Пример кода
var source = Rx.Observable.timer(0, 1000)
.takeUntil(Rx.Observable.timer(5000));
var subscription = source.subscribe(
function (x) { console.log('Next: ' + x); },
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); }); Next: 0 Next: 1 Next: 2 Next: 3 Next: 4 Completed
takeUntil присутствует во всех следующих дистрибутивах:
rx.jsrx.all.jsrx.all.compat.jsrx.compat.jsrx.lite.jsrx.lite.compat.js
Также существует оператор takeUntilWithTime, в который можно передать абсолютное время или начальную длительность, но это описано на странице оператора Take.
RxPHP takeUntil
RxPHP реализует этот оператор как takeUntil.
Возвращает значения из исходной последовательности Observable до тех пор, пока другая последовательность Observable не произведёт значение.
Пример кода
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/take/take.php
$observable = Rx\Observable::fromArray([21, 42, 63]);
$observable
->take(2)
->subscribe($stdoutObserver); Next value: 21 Next value: 42 Complete!
© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/takeuntil.html