Методы take() и takeLast() в общем очень схожи с методами first() и last(). С тем лишь отличием, что первые два могут возвращать не просто - самое первое или самое последнее событие потока; они могут возвращать указанное количество событий.
Метод take()
Подключение - import { take } from ‘rxjs/operators’;
Метод take() принимает в качестве аргумента число - количество событий потока, которые нужно вернуть с момента старта потока.
Например:
import { take } from 'rxjs/operators';
import { timer } from 'rxjs';
const source = timer(0, 1000);
const result = source.pipe(take(10));
result.subscribe(response => console.log(response));
… очевидно, что этот код вернет первые десять событий из потока source -> 0,1,2,3,4,5,6,7,8,9.
Метод takeLast()
Подключение - import { takeLast } from ‘rxjs/operators’;
В противоположность методу take(), метод takeLast() возвратит заданное количество последних событий потока.
Важный момент - метод takeLast() вернет события только после того, как поток завершится.
Пример:
import { takeLast } from 'rxjs/operators';
import { from } from 'rxjs';
const source = from([0,1,2,3,4,5,6,7,8,9]);
const result = source.pipe(takeLast(4));
result.subscribe(response => console.log(response));
… этот код вернет последние четыре события потока source -> 6,7,8,9.
Ссылки: