Now, we should try to make some requests to fetch information from the weather service. But where is the best place to make network requests?
The application has to display the data from the API on different screens. If we do all of the requests from a single controller, then we have to pass the stored data to the next controller. Wouldn't it be better if we have a shared place in the memory (forecast store) which could be accessed by every controller? Once a controller needs some data, it should ask for it and pass a closure (code block) that will be executed when the data is available. This way, the communication with the backend will be encapsulated and only the final result will be provided.
This is a pretty neat trick, but be careful—don't use it everywhere because everything will become dependent on it, which is bad, if you want to...