Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Mysterious Light
Эксперт по математике/физике
4015 / 1976 / 403
Регистрация: 19.07.2009
Сообщений: 3,000
Записей в блоге: 21
1

Прерывание скрипта

10.09.2012, 20:29. Просмотров 1730. Ответов 3
Метки нет (Все метки)

Навеяно статьёй http://habrahabr.ru/post/151155/

Год назад я решил побаловаться с ген. алгоритмами, в качестве языка я необдуманно выбрал JS (а что, абстракция то позволяла и я, не имея конкретной фитнесс-функции, мог этим воспользоваться). В ответственный момент я осознал, что этап селекции, вообще говоря, склонен выполнятся долго, особенно если фитнесс функция тяжелая.

Тогда я решил сделать костыль, разбивая селекцию на цепь из последовательнох вызовов фитнесс функций, связанных setTimeout(<следующая особь>, 0) после вычисления фитнесс функции предыдущей особи. Я считал, что это костыль.

В связи с конкретным усложнением читаемости кода я решил написать несколько функций + объект, которые бы позволили писать в хаскелль-стиле, а именно: описывать действие как объект (по сути функция, замкнутая относительно всех аргументов, в т.ч. this), связывать действия между собою в одну цепочку последовательных действий, запускать эту цепочку, выполняя действия как функции, запуская между ними setTimeout.

Теперь вопрос знатокам:
Это вообще нормально использовать setTimeout для вот таких целей (разрыв тяжелой функции, чтоб не зависало)? Или есть более человечные и правильные способы?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2012, 20:29
Ответы с готовыми решениями:

Прерывание функций в JavaScript
Здравствуйте!!!!! Подскажите пожалуйста, как прервать(остановить) работу...

Прерывание requestAnimationFrame при onwheel
Где раздел про vanilla js? Всем привет! Сделал ссылку &quot;Наверх&quot;: &lt;a href=&quot;#&quot;...

Как можно связать работу скрипта из балуна с работой скрипта на странице?
Первый раз задаю вопрос, извините если не в тот раздел. В общем, делаю...

На счет скрипта
Я нашел в интернете статью как сделать чтобы при нажатии на кнопку оповещение...

Написание скрипта
Доброго времени суток! Прошу прощения вероятно за глупый вопрос. Но можно ли...

3
Vovan-VE
13161 / 6546 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
11.09.2012, 15:33 2
Цитата Сообщение от Mysterious Light Посмотреть сообщение
Это вообще нормально использовать setTimeout для вот таких целей (разрыв тяжелой функции, чтоб не зависало)?
По меньше мере, имхо, это даёт право думать: «Ну я же сделал всё, что от меня зависит. Если всё равно тормозит, значит у Вас комп/браузер медленный.»

А если серьёзно, то, да, действительно, прерывистые операции из очереди таймаутов будут давать возможность выполниться, например, обработчикам событий. Да и сами браузеры тоже по-разному себя ведут при длительном выполнении сплошного скрипта.
1
Mysterious Light
Эксперт по математике/физике
4015 / 1976 / 403
Регистрация: 19.07.2009
Сообщений: 3,000
Записей в блоге: 21
12.09.2012, 01:11  [ТС] 3
Вы правы.

С одной стороны, конечно, огорчает меня тот факт, что ариори программа, написанная на нативном языке (C, например) под ОС, выполняется быстрее, чем программа, написанная на более абстрактном языке (Java или Javascript, например) под некоторый интерпретатор (JVM или browser, соответственно, или другой какой-то исполнитель).

Бывает, я пишу некоторый перебор для своих нужд без особой оптимизации и программа выполняется меньше 20 часов. Известные мне браузеры не позволяют исполнять скрипт более 10 минут. Конечно, можно сказать, что это не нужная задача: либо менять язык и среду на сходную, либо не пудрить мозги. Но всё же...

В комментах к приведенной статье появилась ссылка на http://nin-jin.github.com/article/article_fiber/article_fiber.doc.xml, вроде решающее эту проблему. Ограничения: только ФФ и Хром. Читаю эту статью, может там и ответ будет дан.
0
Qwertiy
821 / 629 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
25.08.2013, 00:17 4
Мне кажется, для вычислительных целей больше подходит серверный джаваскрипт, например node.js.
Точно не знаю, но вроде там нет ограничения на время исполнения.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2013, 00:17

значение скрипта
подскажите что дает данный скрипт &lt;script type=&quot;text/javascript&quot;&gt; var _gaq...

Автозапуск скрипта
Как сделать автозапуск скрипта JS? Как сделать запуск скрипта JS? Без...

Покупка скрипта
Здравствуйте уважаемые форумчане. К сожалению в программировании я не силен, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru