Запустить поток на js
Одна из функций работает долго. Чтобы не тормозить весь браузер, можно ли запустить её в отдельном потоке через js?
Попробовал через setTimeout setTimeout(function() { alert(1); },0); alert(2); но наверное я не до конца понял её функциональность. Данный код выводит сообщение alert(2) И пока его закроешь, сообщение alert(1) не появится. Т.е. никакого парралельного запуска не получается. Так можно ли долго выполняемую функцию выполнить так, чтобы не тормозить весь браузер? (кроме как оптимизировать скорость :) ) |
JavaScript однопоточный язык. Можно разбить долгую функцию на несколько итераций и запускать эти итерации через setTimeout (это если совсем образно). Если приведете код функции, можно будет посмотреть более конкретно.
|
Цитата:
Цитата:
А что касается отдельного потока, то могу сказать только одно - JS НЕ! управляет браузером. JS управляет той средой, которую этот браузер предоставляет. Алгоритмы использования ресурсов браузера не входят в эту среду, а выполняются извне. А что эта функция делает?! Расчёты или визуальное форматирование?! |
Цитата:
|
Цитата:
Советую дочитать до конца, нудно только в начале. |
Цитата:
Просто, видать, я недопонял немного, как ему нужно запускать свою ф-цию. Интересно, какую же ф-цию нада написать чтобы она выполнялась ооочень долго... Думаю, Shasoft, тебе стоит пересмотреть алгоритм. |
За ответы всем спасибо. Разъяснили всё. Я то думал, что раз есть асинхронные запросы AJAX, то можно также сделать и выполнение кода в функции. Но, как я понял, все функции обратного вызова всё-равно выполняются уже ПОСЛЕ отработки основной функции.
По поводу долгой функции: делаю программу на js, которая создает резервную копию сайта (файлы + БД) + обновляет движок с сайта прототипа. В общем админка сайта, только не на сайте, а на отдельной странице. Так что время работы зависит от кол-ва файлов и объема БД. Но так как процесс этот не частый, то время работы в общем мне не особо важно. Тему можно закрывать. |
|
Часовой пояс GMT +3, время: 20:07. |