|
|
|
Отработка событий при длительном цикле
|
|||
|---|---|---|---|
|
#18+
Есть некоторая функция, обрабатывающая в цикле большой объем данных. Это длится несколько секунд-десятков секунд. Проблема с пользовательским интерфейсом браузера. На это время мне надо отобразить gif-анимацию индикатор прогресса. Картинка появляется, но дальше браузер "виснет" не меняя фреймы картинки, ни на что не реагирует. Есть ли способ сделать его более "отзывчивым" на время выполнения этой функции? Что-то наподобие DoEvents из VBA? Без воркеров не обойтись никак? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 20:24 |
|
||
|
Отработка событий при длительном цикле
|
|||
|---|---|---|---|
|
#18+
janco, сделайте ajax запрос, пока не получен ответ или таймаут не случится - рисуйте на экране что угодно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 20:46 |
|
||
|
Отработка событий при длительном цикле
|
|||
|---|---|---|---|
|
#18+
jancoЕсть ли способ сделать его более "отзывчивым" на время выполнения этой функции? Да, есть. http://javascript.ru/blog/Andrej-Paranichev/Osnovy-programmnoj-animacii-JavaScript ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 08:11 |
|
||
|
Отработка событий при длительном цикле
|
|||
|---|---|---|---|
|
#18+
Изопропилjanco, сделайте ajax запрос, пока не получен ответ или таймаут не случится - рисуйте на экране что угодно Куда и какой? Функция выполняется на стороне клиента в браузере. krvsa, спасибо, но это не совсем то о чем я спрашиваю. Там описываются принципы построения анимации. У меня она есть в виде gif-картинки с меняющимися кадрами. Просто из-за зависания браузера эта картинка "мертвая" во время выполнения функции. По всей видимости надо функцию переписать с таймаутами, но счётчики цикла полетят. Тогда надо уже и замыкания реализовать - т.е. очень много переделывать. Думал есть вариант проще. Тогда пусть лучше висит.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 18:05 |
|
||
|
Отработка событий при длительном цикле
|
|||
|---|---|---|---|
|
#18+
janco, Вы правы, Вам для этого нужно будет делать javascript'овский метод асинхронным, используя setInterval, setTimeout или requestAnimationFrame. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 18:13 |
|
||
|
Отработка событий при длительном цикле
|
|||
|---|---|---|---|
|
#18+
Зачем интервалы? Вешать лисенер на аякс. Как завершится, убирать гифку, перед запуском запускать гифку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 20:43 |
|
||
|
Отработка событий при длительном цикле
|
|||
|---|---|---|---|
|
#18+
GustlyЗачем интервалы? Вешать лисенер на аякс. Как завершится, убирать гифку, перед запуском запускать гифку. у пациента длительные расчёты в броузере jancoПо всей видимости надо функцию переписать с таймаутами, но счётчики цикла полетят. да, переписать счётчики никуда не полетят, если их аккуратно передавать через замыкание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 21:30 |
|
||
|
Отработка событий при длительном цикле
|
|||
|---|---|---|---|
|
#18+
jancoспасибо, но это не совсем то о чем я спрашиваю. Там описываются принципы построения анимации. У меня она есть в виде gif-картинки с меняющимися кадрами. Просто из-за зависания браузера эта картинка "мертвая" во время выполнения функции. Принцип там один и тот же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 08:16 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39037160&tid=1445759]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 504ms |

| 0 / 0 |
