TakeWhile
зеркалирует элементы, испускаемые Observable, до тех пор, пока заданное условие не станет ложным
Оператор TakeWhile зеркалирует исходное Observable до тех пор, пока заданное вами условие не станет ложным. В этот момент TakeWhile прекращает зеркалирование исходного Observable и завершает собственное Observable.
См. также
Информация, специфичная для языка
RxGroovy takeWhile
Оператор takeWhile возвращает Observable, которое зеркалирует поведение исходного Observable до тех пор, пока функция, применяемая к элементу, испускаемому этим Observable, не вернёт false, после чего новое Observable завершается уведомлением onCompleted.
numbers = Observable.from( [1, 2, 3, 4, 5, 6, 7, 8, 9] );
numbers.takeWhile({ ((it < 6) || (0 == (it % 2))) }).subscribe(
{ println(it); }, // onNext
{ println("Error: " + it.getMessage()); }, // onError
{ println("Sequence complete"); } // onCompleted
); 1 2 3 4 5 6 Sequence complete
Оператор takeWhile по умолчанию не работает с конкретным Расписанием.
- Javadoc:
takeWhile(Func1)
RxJava 1․x takeWhile
Оператор takeWhile возвращает Observable, которое зеркалирует поведение исходного Observable до тех пор, пока функция, применяемая к элементу, испускаемому этим Observable, не вернёт false, после чего новое Observable завершается уведомлением onCompleted.
Оператор takeWhile по умолчанию не работает с конкретным Расписанием.
- Javadoc:
takeWhile(Func1)
RxJS takeWhile
RxJS реализует оператор takeWhile. Вы передаёте ему функцию, которая управляет процессом получения элементов. RxJS вызывает эту функцию для каждого элемента, испускаемого исходным Observable, до тех пор, пока функция не вернёт false, после чего RxJS прекращает зеркалирование исходного Observable (начиная с этого элемента) и выдает уведомление onCompleted. Функция принимает три параметра:
- испускаемый элемент
- нумерация элемента (от 0) в последовательности испусканий
- исходное Observable
Вы можете передать второй параметр оператору takeWhile. В этом случае этот элемент также будет доступен вашей предикатной функции как «this».
Пример кода
var source = Rx.Observable.range(1, 5)
.takeWhile(function (x) { return x < 3; });
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 Completed
Оператор takeWhile присутствует во всех следующих дистрибутивах:
rx.jsrx.all.jsrx.all.compat.jsrx.compat.jsrx.lite.jsrx.lite.compat.js
RxPHP takeWhile takeWhileWithIndex
RxPHP реализует этот оператор как takeWhile.
Возвращает элементы из последовательности Observable, пока заданное условие истинно. В качестве параметра принимает обратный вызов для проверки каждого элемента исходного потока на соответствие условию. Предикат обратного вызова вызывается со значением элемента.
Пример кода
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/take/takeWhile.php
$source = \Rx\Observable::range(1, 5)
->takeWhile(function ($x) {
return $x < 3;
});
$subscription = $source->subscribe($stdoutObserver); Next value: 1 Next value: 2 Complete!
RxPHP также имеет оператор takeWhileWithIndex.
Возвращает элементы из последовательности Observable, пока заданное условие истинно. В качестве параметра принимает обратный вызов для проверки каждого элемента исходного потока на соответствие условию. Предикат обратного вызова вызывается с индексом и значением элемента.
Пример кода
//from https://github.com/ReactiveX/RxPHP/blob/master/demo/take/takeWhileWithIndex.php
$source = \Rx\Observable::range(1, 5)
->takeWhileWithIndex(function ($i) {
return $i < 3;
});
$subscription = $source->subscribe($stdoutObserver); Next value: 1 Next value: 2 Next value: 3 Complete!
© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/takewhile.html