Популярные операторы в RxJs
Вот таблица, содержащая некоторые из наиболее популярных операторов RxJS, их описание и примеры:
Оператор | Описание | Примеры |
---|---|---|
map | Преобразует значения из исходного потока в новые значения | of(1, 2, 3).pipe(map(x => x * 2)); // Вывод: 2, 4, 6 |
filter | Фильтрует значения исходного потока на основе заданного условия | of(1, 2, 3, 4, 5).pipe(filter(x => x % 2 === 0)); // Вывод: 2, 4 |
mergeMap (или flatMap ) | Преобразует каждое значение исходного потока в новый поток и объединяет их в один поток | of(1, 2, 3).pipe(mergeMap(x => of(x * 2))); // Вывод: 2, 4, 6 |
switchMap | Прекращает предыдущий поток и переключается на новый поток при каждом новом значении исходного потока | of(1, 2, 3).pipe(switchMap(x => of(x * 2))); // Вывод: 2, 4, 6 |
concatMap | Преобразует каждое значение исходного потока в новый поток и последовательно объединяет их | of(1, 2, 3).pipe(concatMap(x => of(x * 2))); // Вывод: 2, 4, 6 |
debounceTime | Отправляет последнее значение из исходного потока только после определенной задержки | fromEvent(input, 'input').pipe(debounceTime(300)); |
distinctUntilChanged | Отфильтровывает повторяющиеся последовательные значения в исходном потоке | of(1, 1, 2, 2, 3).pipe(distinctUntilChanged()); // Вывод: 1, 2, 3 |
take | Берет только определенное количество значений из исходного потока | of(1, 2, 3, 4, 5).pipe(take(3)); // Вывод: 1, 2, 3 |
combineLatest | Комбинирует значения из нескольких потоков и выпускает новое значение при каждом изменении хотя бы одного из потоков | combineLatest([source1$, source2$]).subscribe(([value1, value2]) => console.log(value1, value2)); |
zip | Комбинирует значения из нескольких потоков попарно и выпускает новое значение, содержащее попарно сочетающиеся значения | zip(source1$, source2$).subscribe(([value1, value2]) => console.log(value1, value2)); |
Это только несколько примеров популярных операторов RxJS. В RxJS существует ещё множество других операторов, которые могут быть полезными в различных ситуациях.