Как активировать две функции JavaScript параллельно? - PullRequest
8 голосов
/ 23 февраля 2010

Кто-нибудь может сказать мне, как активировать две (или более) функции JavaScript AJAX параллельно?

Ответы [ 7 ]

14 голосов
/ 23 февраля 2010

Это невозможно. Javascript может работать только в одном потоке, и фактически невозможно иметь две функции, работающие параллельно. Вам нужно сделать один звонок, а затем другой. Их обратные вызовы будут вызываться (не обязательно в том же порядке, что и методы вызова), когда данные возвращены или возникает ошибка / тайм-аут. Только после завершения одного обратного вызова будет разрешено выполнение второго.

Имейте также в виду, что браузеры ограничивают количество активных вызовов ajax. Поэтому, если вы попытаетесь сделать слишком много вызовов Ajax, можно подождать (блокируя весь код JavaScript), чтобы другие вызовы завершились.

6 голосов
/ 21 июля 2012

Поиск веб-работников. Это своего рода новая функция в современных браузерах, которая может быть недоступна в старых.

0 голосов
/ 29 мая 2018

использование Web Workers для параллельного запуска задач

Вы можете обучающий курс здесь: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

Кроме того, эта библиотека, которая использует возможности веб-работников, появилась в Google довольно быстро: https://parallel.js.org/

0 голосов
/ 26 августа 2016

Javascript работает как единый поток, если запросы, которые вы хотите сделать, не имеют ввода-вывода, в этом случае просто невозможно, если задействована операция ввода-вывода, вы можете очень хорошо выполнить две функции одну после с другой стороны, сама природа javascript начнет выполнять следующую функцию, когда будет ожидать ввода-вывода. Обычно в языках, поддерживающих многопоточность, одно и то же достигается автоматически во время периода покоя ЦП для потока.

0 голосов
/ 08 января 2015

Используйте window.open () для вызова новой страницы. Эта страница будет вызывать первую функцию JS. После того, как window.open () вызовет вторую функцию, вы технически не ждете завершения первой функции. Вы просто ждете, пока window.open () запустится, а затем второй выполнится.

0 голосов
/ 22 февраля 2014

Использование нескольких setInterval может сделать возможным параллельный запуск, хотя он все еще может работать на одном ядре.Следующий код является примером распараллеливания функции func с массивом данных «data».Для его запуска используйте Parallel (func, datas), где func - это имя вашей глобальной функции, а datas - это массив данных, каждый из которых является входом для func.jsfiddle test .Отметка времени в целых числах показывает, что два ajax работали параллельно.

0 голосов
/ 23 февраля 2010

Это то, что вы ищете?

setTimeout('JsFunction1(val);', 0); 
setTimeout('JsFunction2(val);', 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...