Несколько причин, по которым не стоит использовать setTimeout с нулевыми задержками в современных проектах:
Фактическая задержка может быть больше, чем предполагалось. 1 Даже когда задержка опущена или равна 0, есть причины, по которым она может быть длиннее, например:
неактивная вкладка браузера; 1
выполнение других задач в очереди занимало больше времени, чем задержка; 1
браузер может увеличивать минимальный интервал срабатывания таймера (и минимальную задержку) до 300 или даже 1000 мс в зависимости от браузера и настроек производительности ОС. 4
Выполнение функции будет после завершения текущего кода. 45 Это может привести к неожиданным результатам, когда запланированная функция запускается после того, как браузер начнёт обрабатывать другие события или запросы. 5
Для современных проектов рекомендуется использовать рекурсивный setTimeout, в котором задержка изменяется в зависимости от факторов, влияющих на время исполнения переданной в него функции. 3