app.factory('invoicesService1', ['$http', '$q', '$timeout', function ($http, $q, $timeout) { var service = { metaData: null, getMetaData: getMetaData, } return service; var deferred = null; function getMetaData(refresh) { if (!refresh && deferred !== undefined) { return deferred.promise; } deferred = $q.defer(); $http.get('/t2/metaData') .success(function (data) { service.metaData = data; service.inProcess = false; deferred.resolve(data); }) .error(function (data, status, header, config) { deferred.reject(status); }); return deferred.promise; }; }])