Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Паралельное выполнение setInterval (https://javascript.ru/forum/dom-window/71873-paralelnoe-vypolnenie-setinterval.html)

FunnyH 19.12.2017 08:03

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

ksa 19.12.2017 08:23

Цитата:

Сообщение от FunnyH
Каким образом можно добиться параллельного выполнения двух setInterval?

Никакой параллельности JS не обещает. Это может быть только частным случаем...
Т.е. можно просто запустить несколько раз этот метод. Но когда будут выполняться сами функции тебе никто не скажет. После истечения указанного таймаута.

рони 19.12.2017 09:26

FunnyH,
может как-то без setInterval обойтись? есть же requestAnimationFrame и рекурсивный-settimeout

FunnyH 19.12.2017 10:40

Благодарю за предложение. Буду пробовать

FunnyH 20.12.2017 10:49

Спасибо за предложение, но к сожалению оно тоже не подходит. Сейчас есть примерно такой код.

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

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


Во время выполнения второго setInterval, первый не выполняется. А мне необходимо, что бы первый выполнялся непрерывно

рони 20.12.2017 12:20

FunnyH,
у вас там не запрос к серверу случайно?

Белый шум 20.12.2017 12:43

FunnyH,
Яваскрипт - однопоточный, долгие функции блокируют выполнение всего остального кода. Если очень надо именно параллельное выполнение, то читайте про worker - но в нём не будет доступа к DOM страницы и ещё какие-то ограничения вроде есть.

ksa 20.12.2017 13:30

Цитата:

Сообщение от FunnyH
Во время выполнения второго setInterval, первый не выполняется.

Вот это кагбэ хотелось бы посмотреть на каком-то примере... Это разные потоки и по "работоспособности" они так влиять друг на друга не должны.
Пока не особо верю в такое. :)


Часовой пояс GMT +3, время: 11:55.