Spec-Zone.ru › ReactiveX

TakeLast

выводить только последние n элементов, испущенных Observable
Открыть интерактивную диаграмму на rxmarbles.com

Вы можете выводить только последние n элементов, испущенных Observable, и игнорировать элементы, которые появляются до них, изменив Observable с помощью оператора TakeLast.

См. также

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

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

RxGroovy takeLast takeLastBuffer

takeLast

Вы можете выводить только последние n элементов, испущенных Observable, и игнорировать элементы, которые ему предшествуют, изменив Observable с помощью оператора takeLast(n). Обратите внимание, что это отложит выпуск любого элемента из исходного Observable до завершения исходного Observable.

Пример кода

numbers = Observable.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);

numbers.takeLast(2).subscribe(
  { println(it); },                          // onNext
  { println("Error: " + it.getMessage()); }, // onError
  { println("Sequence complete"); }          // onCompleted
);
8
9
Sequence complete

Этот вариант оператора takeLast по умолчанию не работает с каким-либо конкретным Планировщиком.

  • Javadoc: takeLast(int)
takeLast

Существует также вариант оператора takeLast, который принимает временную продолжительность вместо количества элементов. Он выводит только те элементы, которые были испущены в течение последнего промежутка времени существования исходного Observable. Вы устанавливаете эту продолжительность, передавая длительность и единицы измерения времени в качестве параметров для оператора takeLast.

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

Этот вариант оператора takeLast по умолчанию работает с Планировщиком computation, но вы также можете передать планировщик по своему выбору в качестве необязательного третьего параметра.

  • Javadoc: takeLast(long,TimeUnit)
  • Javadoc: takeLast(long,TimeUnit,Scheduler)
takeLast

Также есть вариант, который объединяет оба метода. Он выводит минимальное количество элементов, испущенных в течение заданного временного интервала или определенное количество элементов.

Этот вариант оператора takeLast по умолчанию работает с Планировщиком computation, но вы также можете передать планировщик по своему выбору в качестве необязательного четвертого параметра.

  • Javadoc: takeLast(int,long,TimeUnit)
  • Javadoc: takeLast(int,long,TimeUnit,Scheduler)
takeLastBuffer

Также есть оператор под названием takeLastBuffer. Он существует в том же наборе вариантов, что и для оператора takeLast, и отличается только поведением, выводя элементы не индивидуально, а собранными в один List элементов, который выводится как один элемент.

  • Javadoc: takeLastBuffer(int)
  • Javadoc: takeLastBuffer(long,TimeUnit)
  • Javadoc: takeLastBuffer(long,TimeUnit,Scheduler)
  • Javadoc: takeLastBuffer(int,long,TimeUnit)
  • Javadoc: takeLastBuffer(int,long,TimeUnit,Scheduler)

RxJava 1․x takeLast takeLastBuffer

takeLast

Вы можете выводить только последние n элементов, испущенных Observable, и игнорировать элементы, которые ему предшествуют, изменив Observable с помощью оператора takeLast(n). Обратите внимание, что это отложит выпуск любого элемента из исходного Observable до завершения исходного Observable.

Этот вариант оператора takeLast по умолчанию не работает с каким-либо конкретным Планировщиком.

  • Javadoc: takeLast(int)
takeLast

Существует также вариант оператора takeLast, который принимает временную продолжительность вместо количества элементов. Он выводит только те элементы, которые были испущены в течение последнего промежутка времени существования исходного Observable. Вы устанавливаете эту продолжительность, передавая длительность и единицы измерения времени в качестве параметров для оператора takeLast.

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

Этот вариант оператора takeLast по умолчанию работает с Планировщиком computation, но вы также можете передать планировщик по своему выбору в качестве необязательного третьего параметра.

  • Javadoc: takeLast(long,TimeUnit)
  • Javadoc: takeLast(long,TimeUnit,Scheduler)
takeLast

Также есть вариант, который объединяет оба метода. Он выводит минимальное количество элементов, испущенных в течение заданного временного интервала или определенное количество элементов.

Этот вариант оператора takeLast по умолчанию работает с Планировщиком computation, но вы также можете передать планировщик по своему выбору в качестве необязательного четвертого параметра.

  • Javadoc: takeLast(int,long,TimeUnit)
  • Javadoc: takeLast(int,long,TimeUnit,Scheduler)
takeLastBuffer

Также есть оператор под названием takeLastBuffer. Он существует в том же наборе вариантов, что и для оператора takeLast, и отличается только поведением, выводя элементы не индивидуально, а собранными в один List элементов, который выводится как один элемент.

  • Javadoc: takeLastBuffer(int)
  • Javadoc: takeLastBuffer(long,TimeUnit)
  • Javadoc: takeLastBuffer(long,TimeUnit,Scheduler)
  • Javadoc: takeLastBuffer(int,long,TimeUnit)
  • Javadoc: takeLastBuffer(int,long,TimeUnit,Scheduler)

RxJS takeLast takeLastBuffer takeLastBufferWithTime takeLastWithTime

takeLast

Вы можете выпустить только последние n элементов, испускаемых Observable, и проигнорировать те элементы, которые предшествуют им, изменив Observable с помощью оператора takeLast(n). Обратите внимание, что это задержит выпуск любого элемента из исходного Observable до завершения этого Observable.

Пример кода

var source = Rx.Observable.range(0, 5)
    .takeLast(3);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: 2
Next: 3
Next: 4
Completed

takeLast находится в каждом из следующих дистрибутивов:

  • rx.js
  • rx.alljs
  • rx.all.compatjs
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js
takeLastWithTime

Оператор takeLastWithTime принимает временную длительность, а не количество элементов. Он испускает только те элементы, которые испускаются в течение этой последней длительности существования исходного Observable. Вы задаете эту длительность, передавая число миллисекунд в качестве параметра оператору takeLastWithTime.

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

Оператор takeLastWithTime по умолчанию запускает таймер на timeout Scheduler и испускает элементы на currentThread Scheduler, но вы также можете передать Schedulers по своему выбору, чтобы переопределить эти параметры, в качестве необязательных второго и третьего параметров соответственно.

Пример кода

var source = Rx.Observable.timer(0, 1000)
    .take(10)
    .takeLastWithTime(5000);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: 5
Next: 6
Next: 7
Next: 8
Next: 9
Completed

takeLastWithTime находится в каждом из следующих дистрибутивов:

  • rx.all.js
  • rx.all.compat.js
  • rx.time.js (требуется rx.js или rx.compat.js)
  • rx.lite.js
  • rx.lite.compat.js
takeLastBuffer

Также есть оператор, называемый takeLastBuffer. Он отличается по поведению от takeLast тем, что испускает свои элементы не по отдельности, а собранными в один массив элементов, который испускается как один элемент.

Пример кода

var source = Rx.Observable.range(0, 5)
    .takeLastBuffer(3);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: 2,3,4
Completed

takeLastBuffer находится в каждом из следующих дистрибутивов:

  • rx.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.lite.js
  • rx.lite.compat.js
takeLastBufferWithTime

У takeLastBuffer также есть вариант, основанный на длительности, takeLastBufferWithTime, который похож на takeLastWithTime за исключением того, что он испускает свои элементы не по отдельности, а собранными в один массив элементов, который испускается как один элемент.

Пример кода

var source = Rx.Observable
    .timer(0, 1000)
    .take(10)
    .takeLastBufferWithTime(5000);

var subscription = source.subscribe(
    function (x) { console.log('Next: ' + x); },
    function (err) { console.log('Error: ' + err); },
    function () { console.log('Completed'); });
Next: 5,6,7,8,9
Completed

takeLastBufferWithTime находится в каждом из следующих дистрибутивов:

  • rx.js
  • rx.all.js
  • rx.all.compat.js
  • rx.compat.js
  • rx.time.js (требуется rx.js или rx.compat.js)
  • rx.lite.js
  • rx.lite.compat.js

RxPHP takeLast

RxPHP реализует этот оператор как takeLast.

Возвращает указанное количество смежных элементов с конца последовательности observable.

Пример кода

//from https://github.com/ReactiveX/RxPHP/blob/master/demo/take/takeLast.php

$source = \Rx\Observable::range(0, 5)
    ->takeLast(3);

$source->subscribe($stdoutObserver);
Next value: 2
Next value: 3
Next value: 4
Complete!

© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/operators/takelast.html

Spec-Zone.ru

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