The actions are simple objects containing the new data and an identifying method, and most often originate from user interactions with the views.
The dispatcher then invokes the callbacks that the stores have registered with it, dispatching actions to all stores.
This was difficult to handle with MVC — marking a single thread as read would update the thread model, and then also need to update the unread count model.
These dependencies and cascading updates often occur in a large MVC application, leading to a tangled weave of data flow and unpredictable results.
Control is inverted with stores: the stores accept updates and reconcile them as appropriate, rather than depending on something external to update its data in a consistent way.