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