RxJS - Операторы

Операторы - важная часть RxJS. Оператор - это чистая функция, которая принимает на входе наблюдаемое, а вывод также является наблюдаемым.

Работа с операторами

Оператор - это чистая функция, которая принимает на входе наблюдаемое, а вывод также является наблюдаемым.

Для работы с операторами нам понадобится метод pipe ().

Пример использования pipe ()

let obs = of(1,2,3); // an observable
obs.pipe(
   operator1(),
   operator2(),
   operator3(),
   operator3(),
)

В приведенном выше примере мы создали наблюдаемое, используя of(), который принимает значения 1, 2 и 3. Теперь на этом наблюдаемом вы можете выполнять различные операции, используя любое количество операторов, используя метод pipe (), как показано выше. Выполнение операторов будет продолжаться последовательно для данной наблюдаемой.

Ниже рабочий пример -

import { of } from 'rxjs';
import { map, reduce, filter } from 'rxjs/operators';

let test1 = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
let case1 = test1.pipe(
   filter(x => x % 2 === 0),
   reduce((acc, one) => acc + one, 0)
)
case1.subscribe(x => console.log(x));

Вывод

30

В приведенном выше примере мы использовали оператор фильтра, который фильтрует четные числа, а затем мы использовали reduce() оператор, который добавит четные значения и выдаст результат при подписке.

Вот список наблюдаемых, которые мы собираемся обсудить.

  • Creation
  • Mathematical
  • Join
  • Transformation
  • Filtering
  • Utility
  • Conditional
  • Multicasting
  • Обработка ошибок

Операторы создания

Ниже приведены операторы, которые мы собираемся обсудить в категории операторов создания.

Старший Нет Оператор и описание
1 ajax

Этот оператор сделает запрос ajax для данного URL.

2 из

Этот оператор создаст наблюдаемое из массива, объекта, подобного массиву, обещания, итеративного объекта или объекта, подобного наблюдаемому.

3 fromEvent

Этот оператор выдаст вывод в виде наблюдаемого, который будет использоваться для элементов, которые генерируют событие, например, кнопки, щелчки и т. Д.

4 fromEventPattern

Этот оператор создаст наблюдаемое из функции ввода, которая используется для регистрации обработчиков событий.

5 интервал

Этот оператор будет создавать Observable каждый раз в заданное время ..

6 из

Этот оператор принимает переданные аргументы и преобразует их в наблюдаемые.

7 спектр

Этот оператор создаст Observable, который выдаст вам последовательность чисел на основе предоставленного диапазона.

8 throwError

Этот оператор создаст наблюдаемый объект, который уведомит об ошибке.

9 таймер

Этот оператор создаст наблюдаемый объект, который будет выдавать значение после тайм-аута, и значение будет увеличиваться после каждого вызова.

10 iif

Этот оператор решит, на какой Observable будет подписана подписка.

Математические операторы

Ниже приведены операторы, которые мы собираемся обсудить в категории математических операторов:

Старший Нет Оператор и описание
1 Считать

Оператор count () принимает Observable со значениями и преобразует его в Observable, который даст единственное значение

2 Максимум

Метод Max принимает наблюдаемое со всеми значениями и возвращает наблюдаемое с максимальным значением.

3 Мин.

Метод Min принимает наблюдаемое со всеми значениями и возвращает наблюдаемое со значением min.

4 Уменьшить

В операторе сокращения функция аккумулятора используется для входного наблюдаемого объекта, а функция аккумулятора возвращает накопленное значение в форме наблюдаемого объекта с необязательным начальным значением, переданным в функцию аккумулятора.

Функция reduce () примет 2 аргумента, одну функцию-накопитель и второе начальное значение.

Операторы присоединения

Ниже приведены операторы, которые мы собираемся обсудить в категории операторов соединения.

Старший Нет Оператор и описание
1 concat

Этот оператор будет последовательно выдавать Observable в качестве входных данных и переходить к следующему.

2 forkJoin

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

3 слияние

Этот оператор примет входной наблюдаемый объект и выдаст все значения из наблюдаемого и выдаст один единственный выходной наблюдаемый.

4 гонка

Он вернет наблюдаемое, которое будет зеркальной копией первого наблюдаемого источника.

Операторы преобразования

Ниже перечислены операторы, которые мы собираемся обсудить в категории операторов преобразования.

Старший Нет Оператор и описание
1 буфер

Буфер работает с наблюдаемым и принимает аргумент как наблюдаемое. Он начнет буферизацию значений, испускаемых его исходным наблюдаемым объектом в массиве, и будет генерировать то же самое, когда испускается наблюдаемый объект, взятый в качестве аргумента. Как только наблюдаемый объект, взятый в качестве аргумента, испускается, буфер сбрасывается и снова начинает буферизацию исходного объекта, пока не испускается наблюдаемое на входе, и тот же сценарий не повторяется.

2 bufferCount

В случае оператора buffercount () он будет собирать значения из наблюдаемого объекта, для которого он вызывается, и генерировать их, когда размер буфера, заданный для buffercount, совпадает.

3 bufferTime

Это похоже на bufferCount, поэтому здесь он будет собирать значения из наблюдаемого объекта, для которого он вызывается, и генерировать bufferTimeSpan. Он принимает 1 аргумент, то есть bufferTimeSpan .

4 bufferToggle

В случае bufferToggle () он принимает 2 аргумента: openings и closedSelector. Открывающие аргументы - это подписка или обещание запустить буфер, а второй аргумент closeSelector снова подписывается или обещает индикатор закрыть буфер и выдать собранные значения.

5 bufferWhen

Этот оператор выдаст значения в виде массива, он принимает один аргумент в качестве функции, которая будет решать, когда закрыть, испустить и сбросить буфер.

6 расширять

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

7 группа по

В операторе groupBy выходные данные группируются на основе определенного условия, и эти элементы группы выводятся как GroupedObservable.

8 карта

В случае оператора карты функция проекта применяется к каждому значению в исходном Observable, и тот же результат испускается как Observable.

9 mapTo

Постоянное значение выдается на выходе вместе с Observable каждый раз, когда исходный Observable выдает значение.

10 mergeMap

В случае оператора mergeMap функция проекта применяется к каждому исходному значению, и ее выходные данные объединяются с выходными данными Observable.

11 switchMap

В случае оператора switchMap функция проекта применяется к каждому исходному значению, и его выходные данные объединяются с выходными данными Observable, а заданное значение является самым последним прогнозируемым Observable.

12 окно

Он принимает аргумент windowboundaries, который является наблюдаемым, и возвращает вложенный наблюдаемый объект всякий раз, когда заданные границы окна испускают

Операторы фильтрации

Ниже перечислены операторы, которые мы собираемся обсудить в категории операторов фильтрации.

Старший Нет Оператор и описание
1 дебонсировать

Значение, передаваемое из источника Observable через некоторое время, и выброс определяется другим входом, заданным как Observable или обещание.

2 debounceTime

Он будет выдавать значение из наблюдаемого источника только по истечении времени.

3 отчетливый

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

4 elementAt

Этот оператор даст единственное значение из наблюдаемого источника на основе заданного индекса.

5 фильтр

Этот оператор будет фильтровать значения из исходного Observable на основе заданной функции предиката.

6 первый

Этот оператор даст первое значение, испускаемое исходным Observable.

7 последний

Этот оператор даст последнее значение, выданное исходным Observable.

8 ignoreElements

Этот оператор игнорирует все значения из исходного Observable и выполняет только вызовы для завершения или функции обратного вызова с ошибкой.

9 образец

Этот оператор выдаст самое последнее значение из исходного Observable, а вывод будет зависеть от переданного ему аргумента.

10 пропускать

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

11 дроссель

Этот оператор будет выводить, а также игнорировать значения из наблюдаемого источника в течение времени, определенного входной функцией, принятой в качестве аргумента, и тот же процесс будет повторяться.

Операторы коммунальных служб

Ниже перечислены операторы, которые мы собираемся обсудить в категории операторов полезности.

Старший Нет Оператор и описание
1 нажмите

Этот оператор будет иметь вывод, такой же, как и исходный наблюдаемый объект, и может использоваться для записи значений для пользователя из наблюдаемого. Главное значение, ошибка, если она есть, или если задача выполнена.

2 задержка

Этот оператор задерживает значения, испускаемые из исходного Observable, в зависимости от заданного времени ожидания.

3 delayWhen

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

4 наблюдать

Этот оператор на основе планировщика ввода будет повторно отправлять уведомления из источника Observable.

5 подписаться

Этот оператор помогает асинхронно подписаться на исходный Observable на основе планировщика, взятого в качестве входных данных.

6 интервал времени

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

7 отметка времени

Возвращает метку времени вместе со значением, полученным из источника Observable, который сообщает о времени, когда значение было отправлено.

8 тайм-аут

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

9 toArray

Накапливает все исходные значения из Observable и выводит их в виде массива, когда источник завершается.

Условные операторы

Ниже перечислены операторы, которые мы собираемся обсудить в категории условных операторов.

Старший Нет Оператор и описание
1 defaultIfEmpty

Этот оператор вернет значение по умолчанию, если наблюдаемый источник пуст.

2 каждый

Он вернет Observable на основе входной функции, удовлетворяющей условию для каждого значения в исходном Observable.

3 находить

Это вернет наблюдаемое, когда первое значение исходного Observable удовлетворяет условию для функции предиката, взятой в качестве входных.

4 findIndex

Этот оператор на основе планировщика ввода будет повторно отправлять уведомления из источника Observable.

5 пусто

Этот оператор выдает на выходе значение true, если наблюдаемый вход выполняет полный обратный вызов без выдачи каких-либо значений, и false, если наблюдаемый вход передает какие-либо значения.

Операторы многоадресной рассылки

Ниже перечислены операторы, которые мы собираемся обсудить в категории операторов многоадресной рассылки.

Старший Нет Оператор и описание
1 многоадресная передача

Оператор многоадресной рассылки разделяет созданную единую подписку с другими подписчиками. Параметры, которые принимает многоадресная рассылка, являются предметным или фабричным методом, который возвращает ConnectableObservable, имеющий метод connect (). Чтобы подписаться, необходимо вызвать метод connect ().

2 публиковать

Этот оператор возвращает ConnectableObservable и должен использовать метод connect () для подписки на наблюдаемые.

3 publishBehavior

publishBehaviour использует BehaviourSubject и возвращает ConnectableObservable. Чтобы подписаться на созданный наблюдаемый объект, необходимо использовать метод connect ().

4 publishLast

publishBehaviour использует AsyncSubject и возвращает ConnectableObservable. Чтобы подписаться на созданный наблюдаемый объект, необходимо использовать метод connect ().

5 publishReplay

publishReplay использует объект поведения, в котором он может буферизовать значения и воспроизводить их для новых подписчиков и возвращает ConnectableObservable. Чтобы подписаться на созданный наблюдаемый объект, необходимо использовать метод connect ().

6 Поделиться

Это псевдоним оператора mutlicast () с той лишь разницей, что вам не нужно вручную вызывать метод connect () для запуска подписки.

Операторы обработки ошибок

Ниже перечислены операторы, которые мы собираемся обсудить в категории операторов обработки ошибок.

Старший Нет Оператор и описание
1 catchError

Этот оператор заботится об обнаружении ошибок в исходном Observable, возвращая новый Observable или ошибку.

2 повторить попытку

Этот оператор позаботится о повторных попытках для исходного Observable, если есть ошибка, и повторная попытка будет выполнена на основе заданного количества входных данных.