Javascript: Как написать функцию, которая будет выполняться асинхронно? - PullRequest
3 голосов
/ 08 марта 2012

У меня есть несколько строк кода, которые я хочу выполнять асинхронно в Javascript, чтобы он не замедлял мой основной алгоритм. Смотрите этот псевдокод:

//main algorithm with critical code that should run as soon as possible
...
...
runInParallel(function(){
  //time consuming unimportant code to shows some progress feedback to user
  ...
}
//the rest of the time critical algorithm
...
...
runInParallel(function(){
  //time consuming unimportant code to shows some progress feedback to user
  ...
}
//and so on and so forth

Я искал в Stackoverflow, как писать асинхронный код в Javascript, но следующие вопросы не похожи на мои:

Полагаю, я могу использовать таймеры для этой цели. Все, что мне нужно, это тело функции runInParallel (), которая эффективно выполняет код параллельно с моим основным алгоритмом с более низким приоритетом, если это возможно. Кто-нибудь? * * 1016

Ответы [ 2 ]

5 голосов
/ 08 марта 2012

Javascript не имеет синхронизации / управления потоками.Если вы хотите выполнить что-то асинхронно, вы можете использовать setTimeout в сочетании с обратным вызовом для уведомления о завершении функции.

 var asyncHandle = setTimeout(function () { asyncCode(); callback(); }, 10);

asyncHandle можно использовать для отмены тайм-аута довызываемая функция.

2 голосов
/ 08 марта 2012

Если вы ориентируетесь на браузеры, поддерживающие HTML5, используйте HTML5 Web Workers .

Вы также можете попробовать этот интересный, но довольно старый компилятор JavaScript , который позволяетрасширение языка для этой цели.

...