ZabbixCachingProxy: Wrap _refresh() method to call it once.
This commit is contained in:
@@ -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;
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user