Методы SetTimeOut() и setInterval() всегда выделают дополнительный поток и работают независимо. Есть ли способ сделать нормальную Задержку без выделения потока?
JS однопоточный, колбэки setTimeout и setInterval выполняются на том же потоке. Именно поэтому кстати, их задержка не фиксированная.
Для анимации лучше использовать
requestAnimationFrame, так как его срабатывания привязаны непосредственно к отрисовке (строго перед ней) и не нагружают процессор вычислениями, когда он и так нагружен и проседает FPS