Оператор distintUntillChange
Оператор distinctUntilChanged
позволяет фильтровать последовательность значений Observable и эмитить только уникальные значения. Он игнорирует повторяющиеся значения, эмитируя только те, которые отличаются от предыдущего эмита.
Давайте рассмотрим пример кода и разберем его шаг за шагом:
import { of } from 'rxjs';
import { distinctUntilChanged } from 'rxjs/operators';
// Создаем Observable, который эмитит значения
const source$ = of(1, 1, 2, 2, 3, 1, 4, 4, 5);
// Применяем оператор distinctUntilChanged
const result$ = source$.pipe(distinctUntilChanged());
// Подписываемся на результат
result$.subscribe(result => console.log(result));
В этом примере у нас есть Observable source$
, который эмитит значения 1, 1, 2, 2, 3, 1, 4, 4, 5. Мы применяем оператор distinctUntilChanged
к этому Observable.
Результатом подписки на result$
будет вывод уникальных значений: 1, 2, 3, 1, 4, 5.
Оператор distinctUntilChanged
сравнивает текущее значение со значением, которое было эмитировано предыдущими эмитами. Если значения совпадают, то оно игнорируется и не эмитится в итоговый поток. Только когда значение отличается от предыдущего, оно будет эмитировано в итоговый поток.
В нашем примере, когда первое значение 1 приходит, оно эмитируется. Затем, когда второе значение также равно 1, оно игнорируется. Затем, когда приходит значение 2, оно эмитируется, так как отличается от предыдущего значения 1. И так далее.
Оператор distinctUntilChanged
полезен, когда вам нужно получить только уникальные значения из Observable и игнорировать повторяющиеся значения.