Использование setInterval для длительных задач может быть нежелательно из-за возможного перекрывания вызовов. 3
SetInterval вызывает функцию через равные временные промежутки. 3 Если выполнение задачи занимает больше времени, чем установленный интервал, может произойти так, что предыдущая операция ещё не завершена, а новая уже должна начать выполняться. 35 Это ломает задуманное поведение. 5
Для обработки продолжительных и сложных задач лучше использовать рекурсивный setTimeout, который даёт возможность сохранить отклик интерфейса. 3