Предисловие
Ядро RXJS - это наблюдаемый объект, который представляет собой комбинацию асинхронного и события программирования с использованием наблюдаемых последовательностей данных.
Асинхронная модель программирования, которая очень похожа на это, является обещанием. Обещание - это асинхронная модель, основанная на изменениях состояния. Как только состояние ожидания входит в успешное или неудачное состояние, оно не может быть изменено снова. Когда состояние меняется, абонент может получить только одно значение; В то время как наблюдаемый является асинхронной моделью программирования, основанной на последовательностях. По мере изменения последовательности подписчик может непрерывно получать новые значения. Более того, обещание предоставляет только механизм обратного вызова и не имеет большего количества операций для поддержки сложной обработки результатов. Observable предоставляет различные операторы для обработки результатов работы для удовлетворения сложной логики применения.
В реальном программировании мы в основном имеем дело с тремя объектами: наблюдаемый , наблюдатель , подписка :
Возьмите событие Click элемента в качестве примера, чтобы увидеть, как использовать наблюдаемый:
var clickstream = new rx.observable (viserver => {var grame = evt => vearver.next (evt); element.addeventListener ('click', handle); return () => element.RemoveEventListener ('click', handle);}); antpcription = clickstream.subscribe (evt => {console.log); evt.id);}, err => {console.error ('onerror');}, () => {console.log ('oncomplete');}); settimeout (() => {intippring.unsubscribe ();}, 1000); Разве это не было бы слишком хлопотно, если бы каждое событие должно быть обернуто таким образом? Таким образом, RXJS предоставляет нам удобную функцию: Observable.fromEvent Из -за облегчения соединения событий.
Операторы общей ссылки: concat, слияние, комбинации и т. Д.
Проекционные операции: карта, плоская карта, плоская карта должна быть введена
Фильтр: фильтр, различные интенсивности,
Классификация операторов: операторы по категориям
Обработка ошибок: поймать, повторить, наконец
Декомпрессия: дебайт, дроссель, образец, пауза
Уменьшить: буфер, буферисткаунт, буфера
Чтобы овладеть операторами наблюдаемых, вы должны сначала научиться понимать диаграмму последовательности:
Стрелки представляют последовательности, которые меняются со временем. Например, нажатие мыши непрерывно по элементу, и круг представляет влияние последовательности снаружи. Например, каждый щелчок элемента запустит обратный вызов события, а цифры в круге - это информация, излучаемая снаружи. Например, каждое запуск события будет иметь объект события, представляющий некоторую информацию об этой операции.
Чтобы гибко использовать наблюдаемую для обработки сложной логики, вы должны научиться использовать операторы, которые он предоставляет. Я разделил операторов на две категории: операция с одной последовательности и операция композитной последовательности. Операция с одной последовательности относится к операциям операций, выполняемых на одной последовательности. Операция составной последовательности относится к операторам, которые обрабатывают две или более последовательности. Работа составной последовательности относительно сложно понять.
Давайте сначала рассмотрим операции с одной последовательности, взяв карту операций в качестве примера:
Операция карты состоит в том, чтобы каждый раз преобразовать информацию, передаваемую снаружи, в последовательности. Как показано на рисунке выше, карта умножает значение передачи каждого раз на десять. Затем, когда подписчик подписывается, значение подписки, полученное каждый раз, больше не является исходным 123, а преобразованным 10 20 30. Через диаграммы последовательностей вы можете легче понять операции Obsitable.
Давайте возьмем слияние в качестве примера
Цель операции слияния - синтезировать две независимые последовательности в одну последовательность. Первоначально, с течением времени, последовательность 1 передает A при 100 мс, B на 200 мс и C при 300 мс, его абонент будет получать три значения ABC на 400 мс; Последовательность 2 передает D при 150 мс, E при 250 мс и F при 350 мс, а его подписчик получает три значения DEF в течение 400 мс. Новая последовательность после слияния получит ABCDEF в течение 400 мс (обратите внимание на заказ).
Понимание общих операторов:
Visemble.range: передает определенное количество последовательностей стоимости.
Vesectable.toarray: преобразует все испускаемые значения в массив, когда последовательность завершена.
Usearble.flatmap: преобразует элементы в исходном потоке последовательности в новый поток последовательности и объединяет этот новый поток последовательности с местоположением элементов в исходной последовательности.
Visemble.startwith: он устанавливает первое значение наблюдаемой последовательности
Наблюдаемый.combineLatest: аналогично PROMISEALL, он будет выполняться только после того, как все последовательности будут иметь результаты.
Наблюдаемый.scan: значения, испускаемые в последовательности, могут быть агрегированы. Подобно уменьшению, уменьшить будет объединять значения всей последовательности и отправлять окончательное значение, когда последовательность будет завершена.
Наблюдаемый.sample: Получите определенную выборку из непрерывной последовательности
Assectable.merge: объединить несколько последовательностей в одну, и может использоваться как или
Vesectable.timestamp: может получить время передачи каждого значения передачи
Visemble.distinctuntilChanged (сравните, селектор): селектор вынимает ключ, используемый для сравнения, и сравнивает его для сравнения двух ключей
Vesitable.takewhile () прекращает передачу данных, когда параметр является ложным
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи поможет всем, кто учится или работа. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения.