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

В этой статье мы подробно рассмотрим, как создать observable.

RxJs имеет довольно много методов для создания observable, и мы рассмотрим некоторые из них в этой статье.

Create

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

Как указано в документации, «Rx.Observable.create - это псевдоним для Observable конструктора» - лучший способ описать его.

Синтаксис этого метода довольно прост, он принимает одну функцию в качестве входных данных, которая, в свою очередь, передается наблюдателю, который может выдавать значения с помощью .next(), выдавать ошибки с помощью .error() и завершать с .complete().

Часто бывает сложно использовать метод create для создания сложной наблюдаемой. Итак, у нас есть еще много так называемых операторов создания, которые делают использование observables очень простым и легким.

Of

Сначала идет оператор Of, возможно, самый простой оператор создания из всех.

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

Использовать его также очень просто, посмотрите пример ниже.

FromEventPattern

Затем идет FromEventPattern, который создает Observable из API на основе функций addHandler / removeHandler.

Метод FromEventPattern принимает два аргумента: один - addHandler, другой - removeHandler. addHandler вызывается, когда выходной Observable подписан, а removeHandler вызывается, когда подписка отменяется.

Синтаксис этого метода следующий

FromEvent

FromEvent создает Observable, который генерирует события определенного типа, исходящие от заданной цели события.

Например, вы можете использовать этот метод для создания Observable из DOM событий, событий узла EventEmitter или других.

Можно сказать, что это синтаксический сахар для FromEventPattern для обработки случаев Dom Events и узла EventEmitter.

Этот метод принимает два аргумента: один - это target (как элемент dom) и eventName. Обработчик событий присоединяется, когда выход Observable подписан, и удаляется, когда Subscription отписывается.

Синтаксис FromEvent следующий

FromPromise

Метод FromPromise просто преобразует обещание в Observable. Он возвращает Observable, который просто выдает Promise’s разрешенное значение, а затем завершается.

Этот метод принимает на вход обещание.

Интервал

Interval создает Observable, который выдает последовательные числа через каждый указанный интервал времени. Он начинается с 0 и никогда не заканчивается.

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

Диапазон

Range создает Observable, который генерирует последовательность чисел в указанном диапазоне. Оператор Range генерирует ряд последовательных целых чисел по порядку, где вы выбираете start диапазона и его length.

Этот метод принимает 2 аргумента: один - это start, а другой - length последовательности.

Синтаксис наблюдаемого диапазона выглядит примерно так.

Таймер

Timer создает Observable, который начинает излучать после initialDelay и выдает все возрастающие числа после каждого period времени после этого.

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

Синтаксис таймера os работает следующим образом.

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

Пустой

Оператор empty работает в точности так, как следует из его названия: он не выдает никаких значений и сразу выдает complete уведомление.

Вы можете использовать его, как показано ниже

Бросать

Аналогичным образом метод Throw используется для выдачи ошибки и бездействия.

Его синтаксис похож на empty.

Никогда

Точно так же метод Never ничего не делает, на самом деле он никогда не выдает никакого значения, не выдает ошибку и не завершает работу.

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

Изображения взяты из официальных документов RxJs. Вы можете проверить их здесь.

Я напишу больше о Operators в моем следующем блоге. Операторы - вот что делает RxJs. Настолько мощный и простой в использовании. Здесь мы уже видели некоторые творения operators. Но есть еще много операторов, которые эффективно справляются с нашими повседневными сценариями использования.