ZabbixCachingProxy: Wrap _refresh() method to call it once.

This commit is contained in:
Alexander Zobnin
2016-01-31 16:20:09 +03:00
parent e9d29c63ba
commit 521e3a2a08

View File

@@ -26,28 +26,13 @@ function (angular, _, utils) {
this._initialized = undefined;
this.refreshPromise = false;
// Wrap _refresh() method to call it once.
this.refresh = callOnce(p._refresh, this.refreshPromise);
}
var p = ZabbixCachingProxy.prototype;
/**
* Wrap _refresh() method to call it once.
*/
p.refresh = function() {
var self = this;
var deferred = $q.defer();
if (!self.refreshPromise) {
self.refreshPromise = deferred.promise;
self._refresh().then(function() {
deferred.resolve();
self.refreshPromise = null;
});
} else {
return self.refreshPromise;
}
return deferred.promise;
};
p._refresh = function() {
var self = this;
var promises = [
@@ -146,6 +131,22 @@ function (angular, _, utils) {
});
}
function callOnce(func, promiseKeeper) {
return function() {
var deferred = $q.defer();
if (!promiseKeeper) {
promiseKeeper = deferred.promise;
func.apply(this, arguments).then(function(result) {
deferred.resolve(result);
promiseKeeper = null;
});
} else {
return promiseKeeper;
}
return deferred.promise;
};
}
return ZabbixCachingProxy;
});