Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Паралельное выполнение 2х функций (https://javascript.ru/forum/misc/25064-paralelnoe-vypolnenie-2kh-funkcijj.html)

BorodinKO 24.01.2012 12:38

Паралельное выполнение 2х функций
 
Есть функция которая вызывается 25раз всекунду, дабы создать анимацию одного элемента на сраничке, и есть еще одна функция которая грузит динамичную информацию 1раз в 5секуд. От этой информации немного зависит анимация. Так вот: сама анимация идет гладко но каждую пятую секунду она предтормажыввет, как раз тогда когда идет загрузка информации. Вопррс как сделать так чтобы анимация не тормазила, функции работали паралельно.

Gvozd 24.01.2012 12:50

Цитата:

Сообщение от BorodinKO
и есть еще одна функция которая грузит динамичную информацию 1раз в 5секуд.

Если эта функция у вас вызывается синхронно, то замените на асинхронный вариант
Цитата:

Сообщение от BorodinKO
Вопррс как сделать так чтобы анимация не тормазила, функции работали паралельно.

JS-однопоточный язык, и в нем нельзя выполнять параллельно две функции
Оптимизируйте обработчик запроса, чтобы он выполнялся максимально быстро.
Также можно схитрить, и вызвать основное тело обработчика запроса, сразу после кадра анимации, но тут возможны свои трудности, и не факт, что удастся добиться приемлемого результата

melky 24.01.2012 13:12

по теме : либо у вас съедаются кадры при разборе json, либо функции замораживают интерфейс по причине своего продолжительного выполнения. либо смотрите логику. либо замеряйте время выполнения

Цитата:

Сообщение от Gvozd (Сообщение 152458)
JS-однопоточный язык, и в нем нельзя выполнять параллельно две функции

разве web worker не реализует многопоточность ? в одном месте пишут, что да, в другом - говорят, что он работает как setTimeout.

на сайте whatwg написано следующее:
Цитата:

This specification defines an API for running scripts in the background independently of any user interface scripts.
в "фоне", как это понимать?

Magneto 24.01.2012 13:41

Цитата:

Сообщение от melky
разве web worker не реализует многопоточность ? в одном месте пишут, что да, в другом - говорят, что он работает как setTimeout.

Сама концепция Web Workers предполагает что скрипты запущенные в воркерах должны исполняться независимо, отдельно от основного скрипта. Почему я зделал такие выводы?
1. Воркеры запускаются с отдельного javascript файла.
2. Воркеры не имеют доступ к переменным, функциям, обьектам основного скрипта - они (воркеры) как бы сами в себе.
3. Общение между основным скриптом и воркером происходит через специальное асинхронное API спецефичное для независимых потоков, систем.

Предполагается что для организации работы воркеров браузеры будут использовать встроенные средства операционной системы, так называемые "нити".

При работе с воркерами нужно учитывать что они не имеют доступа к DOM (и возможно BOM, нужно проверить).

dmitriymar 24.01.2012 14:15

Цитата:

Сообщение от melky
разве web worker не реализует многопоточность ? в одном месте пишут, что да, в другом - говорят, что он работает как setTimeout.

В любом случае,результаты работы отдаются в поток языка. Вычисления будут идти параллельно,но вот результаты будут обрабатываться асинхронно в общем потоке. Так что не факт,что совместно с анимацией результат будет не таким же.Тем более функция у него одна и если там что то на манер с=а+б то результат будет ещё более удручающим,поскольку с web worker будет больше процессов задействовано. Тем более с анимацией будет эффект вложенных таймеров-срабатывание их не предсказуемо будет.
Цитата:

Сообщение от Magneto
Сама концепция Web Workers предполагает что скрипты запущенные в воркерах должны исполняться независимо, отдельно от основного скрипта. Почему я зделал такие выводы?

Не только ты:)


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