UNPKG

typed-utilities

Version:
33 lines (24 loc) 944 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.exponentialBackOffDelay = exports.exponentialBackOff = void 0; var _sleep = require("./sleep"); const exponentialBackOffDelay = (baseInterval, factor, iteration) => iteration === 0 ? 0 : Math.random() * Math.pow(factor, iteration + 1) * baseInterval; exports.exponentialBackOffDelay = exponentialBackOffDelay; const exponentialBackOff = async (baseInterval, factor, deadline, fn) => { for (let iteration = 0; true; iteration++) { const nextDelay = exponentialBackOffDelay(baseInterval, factor, iteration); if (Date.now() + nextDelay > deadline) { return null; } await (0, _sleep.sleep)(nextDelay); const now = Date.now(); const value = await fn(iteration, now); if (value !== null) { return value; } } }; exports.exponentialBackOff = exponentialBackOff; //# sourceMappingURL=exponentialBackOff.js.map