Форум программистов, компьютерный форум, киберфорум
Наши страницы

JavaScript

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Mysterious Light
Эксперт по математике/физике
3870 / 1888 / 276
Регистрация: 19.07.2009
Сообщений: 2,902
Записей в блоге: 21
#1

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

10.09.2012, 20:29. Просмотров 1696. Ответов 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):

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

Прерывание requestAnimationFrame при onwheel - JavaScript
Где раздел про vanilla js? Всем привет! Сделал ссылку &quot;Наверх&quot;: &lt;a href=&quot;#&quot; id=&quot;scrollUp&quot;&gt;Наверх&lt;/a&gt; Зацепил к ней js: function...

Правка скрипта - JavaScript
Помогите пожалуйста поправить код, что-бы что-бы вместо &lt; select id=&quot;select_2&quot; &gt; значения изменялись в &lt; span id=&quot;select_2&quot;&gt;.То есть...

Разбор скрипта - JavaScript
Тема из разряда реверса.. Я СИшный программист, но в особенностях js не рублю совершенно. Попалась вот такая функция (она в аттаче, форум...

кроссбраузерность скрипта - JavaScript
есть скрипт который должен работать как переключатель,т.е при нажатии на ссылку один див становится видимым а другой невидимым ну и так по...

Шифровка ф-й скрипта - JavaScript
ребят, помогите расшифровать. основная масса скрипта приобрла эпический вид. тк я на стадии изучения интересно, что там, затем - как...

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

А если серьёзно, то, да, действительно, прерывистые операции из очереди таймаутов будут давать возможность выполниться, например, обработчикам событий. Да и сами браузеры тоже по-разному себя ведут при длительном выполнении сплошного скрипта.
1
Mysterious Light
Эксперт по математике/физике
3870 / 1888 / 276
Регистрация: 19.07.2009
Сообщений: 2,902
Записей в блоге: 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 / 75
Регистрация: 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
Привет! Вот еще темы с ответами:

Зацикливание скрипта - JavaScript
Нужно исправить ошибку: если много раз кликать, по кнопке, тогда скрипт зацикливается. Как я понял нужно создать еще одну функцию, но куда...

Дубликат скрипта - JavaScript
Есть следующий нормально работающий скрипт: (function ($) { var .... $(document).ready(function(e) { ... }); ...

Расшифровка скрипта - JavaScript
Помогите расшифровать скрипт. Почти каждый день удаляю его с сайта на вордпресс &lt;!-- ###: --&gt; &lt;script&gt;var...

Ошибка скрипта - JavaScript
Глупая ошибка, но из-за чего она произошла не могу понять Ругается на эту строку ...


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

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

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