Я делал подобное несколько раз без проблем. События будут просто поставлены в очередь и будут проходить по мере необходимости. Тем не менее, одна вещь, которую следует с осторожностью:
const timeout = 1000;
setInterval(() => {
// some process that takes longer than timeout
}, timeout);
Когда вы пишете что-то вроде этого, setInterval запустится снова после истечения времени ожидания, даже если первая операция еще не завершена. Это может легко привести к блокировке вашей темы. Вместо этого я предпочитаю использовать setTimeout для достижения этой цели:
const timeout = 1000;
const withTimeout = () => {
// some process that takes longer than timeout
setTimeout(withTimeout, 1000);
}
Таким образом, ваш второй вызов withTimeout ставится в очередь только ПОСЛЕ первого запуска выполнения. С помощью этого механизма вы не получаете свои операции строго каждый тайм-аут период, а скорее тайм-аут ПОСЛЕ последнего.