官术网_书友最值得收藏!

ReactiveX

Reactive Extensions, also known as ReactiveX, enable us to express the asynchronous events in an application as a set of observable sequences. Other applications can subscribe to these observables, in order to receive notifications of events that are occurring. A producer can then push these notification events to a consumer as they arrive. Alternatively, if a consumer is slow, it can pull notification events according to its own consumption rate. The end-to-end system of a producer and its consumers is known as a pipeline. It is important to note that pipelines are lazy by default and do not materialize until they are subscribed to by a consumer. This is very different from eager Java types, like Future, which represent active work. The ReactiveX API consists of the following components:

  1. Observables: Observables represent the core concept of ReactiveX. They represent the sequences of emitted items, and they generate events that are propagated to the intended subscribers.
  1. Observer: Any application can express its intent for events published by an observable by creating an observer and subscribing to the respective observable. The intent is expressed in terms of the OnNext, OnCompleted, and OnError methods. Each observable sends a stream of events, followed by a completion event, which executes these methods.
  2. Operators: Operators enable us to transform, combine, and manipulate the sequences of items emitted by observables. The operators on an observable provide a new observable, and thus, they can be tied together. They do not work independently on the original observable; instead, they work on the observable generated by the previous operator to generate a new observable. The complete operator chain is lazy. It is not evaluated until an observer is subscribed to it. The complete chain is shown as follows:

ReactiveX provides the architecture design to build reactive applications. Individual libraries were built around it in different imperative languages to enable its use. These abstractions allow us to build asynchronous, non-blocking applications, and provide the additional benefits listed in the following sections.

主站蜘蛛池模板: 南汇区| 岑溪市| 肇源县| 昌邑市| 嘉荫县| 宁远县| 临漳县| 三亚市| 赤峰市| 鹤庆县| 贵溪市| 礼泉县| 北安市| 仙桃市| 博湖县| 新乐市| 嘉禾县| 达尔| 南平市| 西平县| 平乡县| 和龙市| 泰来县| 彰武县| 政和县| 泗水县| 连州市| 康定县| 武隆县| 金堂县| 凤阳县| 德安县| 巴彦县| 青海省| 沧州市| 正定县| 威信县| 集安市| 柏乡县| 泗水县| 肃宁县|