Spec-Zone.ru › ReactiveX

TakeWhile

зеркалирует элементы, испускаемые Observable, до тех пор, пока заданное условие не станет ложным
TakeWhile

Оператор TakeWhile зеркалирует исходное Observable до тех пор, пока заданное вами условие не станет ложным. В этот момент TakeWhile прекращает зеркалирование исходного Observable и завершает собственное Observable.

См. также

  • Skip
  • SkipLast
  • SkipUntil
  • SkipWhile
  • Take
  • TakeLast
  • TakeUntil
  • Введение в Rx: SkipWhile и TakeWhile

Информация, специфичная для языка

RxGroovy takeWhile

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

Оператор takeWhile возвращает Observable, которое зеркалирует поведение исходного Observable до тех пор, пока функция, применяемая к элементу, испускаемому этим Observable, не вернёт false, после чего новое Observable завершается уведомлением onCompleted.

Оператор takeWhile по умолчанию не работает с конкретным Расписанием.

  • Javadoc: takeWhile(Func1)

RxJS takeWhile

takeWhile

RxJS реализует оператор takeWhile. Вы передаёте ему функцию, которая управляет процессом получения элементов. RxJS вызывает эту функцию для каждого элемента, испускаемого исходным Observable, до тех пор, пока функция не вернёт false, после чего RxJS прекращает зеркалирование исходного Observable (начиная с этого элемента) и выдает уведомление onCompleted. Функция принимает три параметра:

  1. испускаемый элемент
  2. нумерация элемента (от 0) в последовательности испусканий
  3. исходное 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.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.lite.js
  • rx.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

Spec-Zone.ru

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