In this chapter, we focused on the benefits of combining observables; we learned that we can use them to run asynchronous tasks in parallel, avoid code repetition when listening to multiple sources, and improve code reuse and readability.
We also learned different operators to combine and unify observables. The most common and most used observables for doing so are concat(), merge(), and zip().
But we also learned about some other operators to combine observables as they give us more tools to interoperate our code.
Upto now we have just ignored possible errors propagated by an observable. In the next chapter, the focus will be handling these errors and creating tests for our functional reactive applications. So, we will learn detecting errors in observables, handling errors in observables, mocking observables, and testing functional reactive programs.