우선, Nordyke가 그의 대답에서 언급했듯이, 당신은 서비스를 작은 것들로 나누는 것이 좋습니다.
둘째, 데이터 캐싱 방법을 묻고 약속을 사용하기 때문에 $q.when()
당신이 필요로하는 것입니다. 나는 그것을 가져갈 것이다 getPlatform
예를 들어 시작하기위한 예로 :
.factory('DataService', function($http, $q, $timeout) {
var os; // this variable is used to store the result
return {
getPlatform: function() {
var getPlatformData = function() {
if (!os) { // no previous data available, look into other service to fetch the data
var deferred = $q.defer();
BrowserDetect.init();
os = BrowserDetect.OS; // store data
deferred.resolve(os);
return deferred.promise;
}
return $q.when(os); // there is previous data, return it as promise
};
return {
getPlatformData: getPlatformData
};
}
};
});
이런 식으로 OS 정보가 캐시되고
DataService.getPlatform().getPlatformData().then(function(platform) {
...
});
데이터 서비스의 수명 동안 플랫폼 정보를 한 번만 가져옵니다. 동일한 아이디어를 적용 할 수 있습니다 getServerData
서버에서 데이터를 캐시합니다.