Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.07.2009, 17:17
Аватар для Shasoft
Профессор
Отправить личное сообщение для Shasoft Посмотреть профиль Найти все сообщения от Shasoft
 
Регистрация: 03.03.2009
Сообщений: 156

Запустить поток на js
Одна из функций работает долго. Чтобы не тормозить весь браузер, можно ли запустить её в отдельном потоке через js?
Попробовал через setTimeout
setTimeout(function() {
  alert(1);
 },0);
 alert(2);

но наверное я не до конца понял её функциональность. Данный код выводит сообщение alert(2) И пока его закроешь, сообщение alert(1) не появится. Т.е. никакого парралельного запуска не получается.

Так можно ли долго выполняемую функцию выполнить так, чтобы не тормозить весь браузер? (кроме как оптимизировать скорость )
Ответить с цитированием
  #2 (permalink)  
Старый 10.07.2009, 17:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

JavaScript однопоточный язык. Можно разбить долгую функцию на несколько итераций и запускать эти итерации через setTimeout (это если совсем образно). Если приведете код функции, можно будет посмотреть более конкретно.
Ответить с цитированием
  #3 (permalink)  
Старый 10.07.2009, 17:25
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Shasoft
Одна из функций работает долго.
Что значит долго?! Выполняется постоянно много раз или один раз но 10 мин?! И вапсче это не есть нормально.
Сообщение от Shasoft
через setTimeout
Через таймер ты ещё больше повесишь браузер

А что касается отдельного потока, то могу сказать только одно - JS НЕ! управляет браузером. JS управляет той средой, которую этот браузер предоставляет. Алгоритмы использования ресурсов браузера не входят в эту среду, а выполняются извне.

А что эта функция делает?! Расчёты или визуальное форматирование?!
Ответить с цитированием
  #4 (permalink)  
Старый 10.07.2009, 17:30
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Shasoft
Данный код выводит сообщение alert(2) И пока его закроешь, сообщение alert(1) не появится.
Замечал, по моему, в мозилле, что она иногда всё-таки продолжает выполнять код после появления алерта.
Ответить с цитированием
  #5 (permalink)  
Старый 10.07.2009, 17:31
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
Через таймер ты ещё больше повесишь браузер
http://javascript.ru/tutorial/events/timing
Советую дочитать до конца, нудно только в начале.

Последний раз редактировалось Riim, 10.07.2009 в 17:33.
Ответить с цитированием
  #6 (permalink)  
Старый 10.07.2009, 17:48
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Riim
Советую дочитать до конца, нудно только в начале.
спс, я читал.

Просто, видать, я недопонял немного, как ему нужно запускать свою ф-цию.
Интересно, какую же ф-цию нада написать чтобы она выполнялась ооочень долго... Думаю, Shasoft, тебе стоит пересмотреть алгоритм.

Последний раз редактировалось B~Vladi, 10.07.2009 в 17:50.
Ответить с цитированием
  #7 (permalink)  
Старый 10.07.2009, 19:22
Аватар для Shasoft
Профессор
Отправить личное сообщение для Shasoft Посмотреть профиль Найти все сообщения от Shasoft
 
Регистрация: 03.03.2009
Сообщений: 156

За ответы всем спасибо. Разъяснили всё. Я то думал, что раз есть асинхронные запросы AJAX, то можно также сделать и выполнение кода в функции. Но, как я понял, все функции обратного вызова всё-равно выполняются уже ПОСЛЕ отработки основной функции.

По поводу долгой функции: делаю программу на js, которая создает резервную копию сайта (файлы + БД) + обновляет движок с сайта прототипа. В общем админка сайта, только не на сайте, а на отдельной странице.
Так что время работы зависит от кол-ва файлов и объема БД. Но так как процесс этот не частый, то время работы в общем мне не особо важно.

Тему можно закрывать.
Ответить с цитированием
  #8 (permalink)  
Старый 13.07.2009, 23:33
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а зачем это на js делать?

а по поводу многопоточность: в ff она уже появилась
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть ссылку на js Googert Общие вопросы Javascript 10 21.02.2012 17:29
Самая лучшая книга по JS? ulandj Оффтопик 2 06.04.2009 11:35
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33
вызов функции, из JS генерируемого на сервере subaru AJAX и COMET 1 12.07.2008 13:44
подключение стороннего js скрипта friend Общие вопросы Javascript 2 24.05.2008 19:51