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

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.

主站蜘蛛池模板: 达孜县| 巨野县| 木兰县| 乌恰县| 连城县| 石狮市| 正镶白旗| 马龙县| 黄大仙区| 方城县| 祁门县| 东港市| 永宁县| 开远市| 靖江市| 新密市| 洛川县| 旬阳县| 社会| 施秉县| 江源县| 焉耆| 肃北| 平南县| 长顺县| 苍溪县| 株洲市| 罗田县| 东阿县| 读书| 清远市| 固镇县| 鄂伦春自治旗| 浮梁县| 张家川| 沁阳市| 马关县| 景宁| 枞阳县| 安岳县| 家居|