The fuller concept of reactive programming extends the traditional observer pattern somewhat – instead of just firing a particular action on a single event (such as a user click), you can create and subscribe to streams of such events, and set actions to run based on the events that occur in that stream.