TakeLast
выводить только последние n элементов, испущенных Observable
Вы можете выводить только последние n элементов, испущенных Observable, и игнорировать элементы, которые появляются до них, изменив Observable с помощью оператора TakeLast.
См. также
- Last
- Skip
- SkipLast
- SkipUntil
- SkipWhile
- Take
- TakeUntil
- TakeWhile
- Введение в Rx: SkipLast и TakeLast
- RxMarbles:
takeLast
Информация, специфичная для языка
RxGroovy takeLast takeLastBuffer
Вы можете выводить только последние 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, который принимает временную продолжительность вместо количества элементов. Он выводит только те элементы, которые были испущены в течение последнего промежутка времени существования исходного Observable. Вы устанавливаете эту продолжительность, передавая длительность и единицы измерения времени в качестве параметров для оператора takeLast.
Обратите внимание, что это отложит выпуск любого элемента из исходного Observable до завершения исходного Observable.
Этот вариант оператора takeLast по умолчанию работает с Планировщиком computation, но вы также можете передать планировщик по своему выбору в качестве необязательного третьего параметра.
- Javadoc:
takeLast(long,TimeUnit) - Javadoc:
takeLast(long,TimeUnit,Scheduler)
Также есть вариант, который объединяет оба метода. Он выводит минимальное количество элементов, испущенных в течение заданного временного интервала или определенное количество элементов.
Этот вариант оператора takeLast по умолчанию работает с Планировщиком computation, но вы также можете передать планировщик по своему выбору в качестве необязательного четвертого параметра.
- Javadoc:
takeLast(int,long,TimeUnit) - Javadoc:
takeLast(int,long,TimeUnit,Scheduler)
Также есть оператор под названием 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
Вы можете выводить только последние n элементов, испущенных Observable, и игнорировать элементы, которые ему предшествуют, изменив Observable с помощью оператора takeLast(n). Обратите внимание, что это отложит выпуск любого элемента из исходного Observable до завершения исходного Observable.
Этот вариант оператора takeLast по умолчанию не работает с каким-либо конкретным Планировщиком.
- Javadoc:
takeLast(int)
Существует также вариант оператора takeLast, который принимает временную продолжительность вместо количества элементов. Он выводит только те элементы, которые были испущены в течение последнего промежутка времени существования исходного Observable. Вы устанавливаете эту продолжительность, передавая длительность и единицы измерения времени в качестве параметров для оператора takeLast.
Обратите внимание, что это отложит выпуск любого элемента из исходного Observable до завершения исходного Observable.
Этот вариант оператора takeLast по умолчанию работает с Планировщиком computation, но вы также можете передать планировщик по своему выбору в качестве необязательного третьего параметра.
- Javadoc:
takeLast(long,TimeUnit) - Javadoc:
takeLast(long,TimeUnit,Scheduler)
Также есть вариант, который объединяет оба метода. Он выводит минимальное количество элементов, испущенных в течение заданного временного интервала или определенное количество элементов.
Этот вариант оператора takeLast по умолчанию работает с Планировщиком computation, но вы также можете передать планировщик по своему выбору в качестве необязательного четвертого параметра.
- Javadoc:
takeLast(int,long,TimeUnit) - Javadoc:
takeLast(int,long,TimeUnit,Scheduler)
Также есть оператор под названием 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
Вы можете выпустить только последние 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.jsrx.alljsrx.all.compatjsrx.compat.jsrx.lite.jsrx.lite.compat.js
Оператор 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.jsrx.all.compat.js-
rx.time.js(требуетсяrx.jsилиrx.compat.js) rx.lite.jsrx.lite.compat.js
Также есть оператор, называемый 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.jsrx.all.jsrx.all.compat.jsrx.compat.jsrx.lite.jsrx.lite.compat.js
У 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.jsrx.all.jsrx.all.compat.jsrx.compat.js-
rx.time.js(требуетсяrx.jsилиrx.compat.js) rx.lite.jsrx.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