}
static roundTo(number: number, scale: number): number {
- return Utils.convertToFloat(number.toFixed(scale));
+ const roundPower = Math.pow(10, scale);
+ return Math.round(number * roundPower) / roundPower;
}
static getRandomFloatRounded(max: number, min = 0, scale = 2): number {
return date.toLocaleString() + prefixString;
}
- static objectHasOwnProperty(object, property): boolean {
- return Object.prototype.hasOwnProperty.call(object, property);
- }
-
static cloneObject(object) {
return JSON.parse(JSON.stringify(object));
}
}
static insertAt = (str: string, subStr: string, pos: number): string => `${str.slice(0, pos)}${subStr}${str.slice(pos)}`;
+
+ /**
+ * @param {number} [retryNumber=0]
+ * @return {number} - delay in milliseconds
+ */
+ static exponentialDelay(retryNumber = 0): number {
+ const delay = Math.pow(2, retryNumber) * 100;
+ const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay
+ return delay + randomSum;
+ }
}