UNPKG

sqmicro-commons

Version:

Commons for SQ analytics microservices.

35 lines (27 loc) 750 B
const { Throttled } = require('../'); class Counter extends Throttled(Object) { get stats() { return { expected: this.throttleLevel, actual: (100 * (1 - this.counter / this.size)).toFixed(2) }; } constructor(l, n) { super(); this.counter = 0; this.size = n; this.throttleLevel = l; this.throttledMembers = 'count'; } count() { this.counter++; } } const L = 32; const N = 1000000; const counter = new Counter(L, N); for (let i = 0; i < N; i++) { counter.count(); } console.log(`Number of tries: ${N}`); console.log(`Expected about ${counter.stats.expected}% of calls to be skipped, actually skipped: ${counter.stats.actual}%`);