lundi 26 décembre 2016

How to design services to fetch data that are required to be called multiple times?

I have a service that returns a promise.

function GetSuggestedPeersService($http, SITE_CONFIG) {
        var getSuggestedPeersService = this;

        var data;

        getSuggestedPeersService.getSuggestedPeersList = function() {
            var baseUrl = SITE_CONFIG.baseUrl + "fetchSuggestedPeers";
            var response = $http({
                method : 'POST',
                url : baseUrl,
                headers : {
                    'Content-Type' : 'application/x-www-form-urlencoded'
                },
                data : data
            });
            return response;
        }

        getSuggestedPeersService.setSuggestedPeers = function(suggestedPeers) {
            getSuggestedPeersService.suggestedPeers = suggestedPeers;
        }

        getSuggestedPeersService.getSuggestedPeers = function() {
            return getSuggestedPeersService.suggestedPeers;
        }

    }

Now I use the following in the Controller to resolve the promise:

//gets the suggested peers
var promiseSuggestedPeers = GetSuggestedPeersService.getSuggestedPeersList();
promiseSuggestedPeers.then(function (response) {
    peerHealthController.GetSuggPeersShow = response.data;
    GetSuggestedPeersService.setSuggestedPeers(peerHealthController.GetSuggPeersShow);

    return peerHealthController.GetSuggPeersShow;
})
.catch(function (error) {
    console.log("Something went terribly wrong Suggested Peers.");
});

Now my question is call this service multiple times and need to update this on other service calls as well.

What is the best way to write the controller part so as not to repeat the resolve promise every time I call the service?

Aucun commentaire:

Enregistrer un commentaire