UNPKG

@widergy/web-utils

Version:
32 lines (31 loc) 1.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.waitFor = void 0; const waitFor = (conditionFuntion, interval, retries) => { return new Promise((resolve, reject) => { let timerRef = null; let immediateRef = null; let counter = 1; const EXCEEDED_RETRY_LIMIT = `The number of ${retries} retries in ${interval} ms intervals has been exceeded.`; const variablesCleaning = () => { clearImmediate(immediateRef); clearInterval(timerRef); }; const resolveOrReject = () => { if (conditionFuntion()) { variablesCleaning(); resolve(undefined); } else { if (counter > retries) { variablesCleaning(); reject(EXCEEDED_RETRY_LIMIT); } } counter += 1; }; immediateRef = setImmediate(resolveOrReject); timerRef = setInterval(resolveOrReject, interval); }); }; exports.waitFor = waitFor;