@widergy/web-utils
Version:
Utility GO! Web utils
32 lines (31 loc) • 1.08 kB
JavaScript
;
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;