ReactiveX, or Rx for short, is an API for programming with Observable streams. This is the official ReactiveX API for the Go language. ReactiveX is a new, alternative way of asynchronous programming to callbacks, promises, and deferred. It is about processing streams of events or items, with events being any occurrences or changes within the system. A stream of events is called an Observable. An operator is a function that defines an Observable, how and when it should emit data. The RxGo implementation is based on the concept of pipelines. A pipeline is a series of stages connected by channels, where each stage is a group of goroutines running the same function. Each operator is a transformation stage. By default, everything is sequential. Yet, we can leverage modern CPU architectures by defining multiple instances of the same operator. Each operator instance being a goroutine connected to a common channel.
Features
- The philosophy of RxGo is to implement the ReactiveX concepts and leverage the main Go primitives
- The Just operator creates an Observable from a static list of items
- When the data is produced by the Observable itself, it is a cold Observable
- When the data is produced outside the Observable, it is a hot Observable
- Define a transformation function
- Create a static Observable based on a fixed list of items