frontAnswerer/src/widgets/pollForSelector.ts

26 lines
731 B
TypeScript
Raw Normal View History

const SELECTOR_POLLING_INTERVAL = 5000;
export function pollForSelector(
selector: string,
selectorPollingTimeLimit: number,
onSuccess: (element: Element) => void,
) {
const deadline = Date.now() + selectorPollingTimeLimit * 1000;
const interval = setInterval(() => {
const element = document.querySelector(selector);
if (Date.now() > deadline) {
clearInterval(interval);
console.error(`Не удалось найти элемент ${selector} для вставки виджета`);
return;
}
if (!element) {
return;
}
clearInterval(interval);
onSuccess(element);
}, SELECTOR_POLLING_INTERVAL);
}