Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2015, 17:08   #1
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
Вопрос doEvents

Хочу такую функцию
В общем, нужно реализовать длительный и ресурсоёмкий процесс (вернее, длительный цикл) вычисления на JavaScript, который можно было бы прервать. Процесс можно разбить на итерации, между которыми хорошо бы давать пользователю реагировать (например, нажать на кнопку "Стоп"). Можно, конечно, измудриться и делать через setTimeout(..., 0), но это не очень удобно... может, есть другой способ?
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 19.07.2015, 21:07   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Нет, другого способа скорее всего нет. JavaScript однопоточный по своей природе.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 19.07.2015, 21:46   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Длительные циклы браузеры не любят, начнут ругаться. Лучше тогда через таймер, хотя скорость работы будет невысокой.
Arigato вне форума Ответить с цитированием
Старый 20.07.2015, 01:23   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Бесконечный цикл с возможностью остановки и отложного выполнения ~= многопоточный цикл

Код:
var a = true;

while(a) {
 setTimeout(function () {
   //код
  }, 10);
}
uberchel вне форума Ответить с цитированием
Старый 20.07.2015, 09:26   #5
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Основные сведения об объектах Web Worker
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 20.07.2015, 10:17   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Длительные циклы браузеры не любят, начнут ругаться. Лучше тогда через таймер, хотя скорость работы будет невысокой.
Вот-вот. Как-то пытался написать жавку со сменой катринки. Хром, пропустил. Опера сразу заорала - "опасный сайт". Пришлось убрать и сделать на PHP. Потерялась мобильность, но ничё - сойдёт.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 20.07.2015, 12:54   #7
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

uberchel, циклы должны выполняться последовательно, а тут не факт, что будет всегда последовательно... что-то мне подсказывает.

Я сделал через setTimeout в итоге. Везде работает нормально. Запускал в Chrome, Opera, FF, IE, Safari(Win), минут 10 прогонял, никто не ругался
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Старый 20.07.2015, 13:54   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Через таймаут и не будут ругаться, разве что если внутри не зациклится. Вам, скорее всего, лучше подойдет setInterval() - если надо ни один раз запустить по таймеру, а постоянно.
Arigato вне форума Ответить с цитированием
Старый 20.07.2015, 14:48   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Когда асинхронная очередь дойдет до выполнения таймаута, пока не выполнится не отдаст никому бразды правления.
Скинули же уже решение через воркерсы. Тут либо через них делать, либо на сервер сбрасывать, либо проблема высосана из пальца.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 20.07.2015, 22:14   #10
7in
(aka Jin X) !RTFM!
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Сообщений: 295
По умолчанию

Прикольная штука - Web Worker...
Спасибо!
Делаю лабы на Asm/Delphi/C++/Python/VBA(Excel): asmlabs.ru
7in вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где поставить DoEvents VistaSV30 Microsoft Office Access 2 26.08.2010 13:25
перестыл работать DoEvents ytzm2hsD3X0HVxwl Microsoft Office Excel 4 03.12.2009 07:03