All good answers here already.
What I still miss on any explanation here and elsewhere, is the fact that reactive programming can be described or even is a superset of state machines.
Describing what happens to what type of incoming data is the same like describing, from what state you can transition into another state. The only difference I feel is that in reactive programming you most often deal with a steady stream of data. Making a state machine processing streams, is what all people call reactive programming. I might be wrong with that observation but thinking like streamed state machine helped me understand how reactive programming works.