Operators

The Observable abstraction allows for the existence of operators than can act on Observable and be chained together to transform event streams into final output values. These Observable chains follow a very functional pattern of programming and can simplify otherwise complex tasks by relying on pure functions to transform data.

RxJava became particularly popular in the Android developer community. In addition to simplifying common threading challenges in Android development, it brought in a functional programming style that could not easily be achieved in older versions of Java that were required by Android at the time.

ReactiveX includes many popular functional operators such as:

It's also possible to create your own operators if you require to. By combining operators and observables, it's possible to compose multiple asynchronous operators, or streams of data, into a single stream. By combining these data sources, it's possible to avoid callback hell (a state in which multiple nested callbacks become difficult to read and understand), and to handle success and error cases at a single point. These traits can greatly reduce the complexity of certain types of computation.