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.
ReactiveX includes many popular functional operators such as:
- map
- filter
- take
- first
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.