Параллельное выполнение setInterval

Всем доброго времени суток!
С JavaScript работаю недавно. В ходе решения задачи возникла необходимость выполнять два setInterval параллельно, у каждого из них свой временной промежуток. Если выполнять их последовательно, то происходят потери, которые не нужны. Каким образом можно добиться параллельного выполнения двух setInterval?

Покажи код. Не понятно потерях чего ты говоришь. Возможно речь о том, что временные промежутки между вызовами коллбеков интервалов не равны второму аргументу setInterval.

Интервалы работают независимо от друг друга. Пример двух запущенных интервалов.

let secInterValCalls = 0
setInterval(function () {
	console.log(`secInterValCalls ${secInterValCalls}`)
	secInterValCalls += 1
}, 1000)

let halfSecIntervalCalls = 0
setInterval(function () {
	console.log(`half secs ${halfSecIntervalCalls}`)
	halfSecIntervalCalls += 1
}, 500)

Интервалы работают в одном потоке. Код примерно следующий.

setInterval(function(){
    //код выполняющийся за 20мс
}, 20);

setInterval(function(){
    //код, выполняющийся за 600 мс
}, 1000);

На время выполнения кода из второго setInterval работа первого setInterval блокируется. А мне необходимо, что бы они выполнялись параллельно.

Они и будут работать в одном потоке, потому что JavaScript однопоточный. Каждый из интервалов не сможет повторно запускаться через время, указанное вторым аргументом, пока не выполнится весь синхронный код внутри него. Поэтому реальное время перезапуска интервала может быть другим. Если тебе нужны настоящие паралельные вычисления, смотри в сторону веб воркеров.

1 лайк