dynatrace-api-balancer
Version:
A wrapper around Axios that balances and throttles requests across tenants, clusters and cluster nodes.
41 lines (35 loc) • 919 B
JavaScript
;
const Ring = function (arr) {
let i = -1;
// TODO: Return a Proxy that preserves the Array prototype.
return {
next: function() {
if (arr.length === 0)
return null;
if (i < arr.length-1)
i++;
else
i = 0;
return arr[i];
},
forEach: function(callback) {
return arr.forEach(callback);
},
some: function(test) {
return arr.some(test);
},
every: function(test) {
return arr.some(test);
},
reduce: function(callback, initVal) {
return arr.reduce(callback, initVal);
},
get length() {
return arr.length;
},
at: function (i) {
return arr[i];
}
}
};
module.exports = Ring;