- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Подскажите, пожалуйста, кто сталкивался, как это реализовать ("псевдо параллельность") .
Есть страница содержащая некоторые элементы интерфейса, к каждому элементу привязывается определенная логика обработки действий пользователя. В свою очередь реакция некоторых элементов должна происходить с определенной задержкой, например: продолжительностью минута. Java Script выполняет инструкции последовательно, как добиться эффекта параллельности ?
Для большей наглядности приведу конкретный пример:
Есть блок появление которого вызывается по клику на кнопку, по заданию, если пользователь не работает с данным блоком в течении минуты блок должен стать невидимым. Ясно, что если бы это блок был единственным то используя setTimeout() проблемы не возникало бы. Но в течении минуты пользователь может обратиться к другим блокам, задержка не сработает, блок не исчезнет.
Вариантом решения вижу, возможно, использование функции "диспетчера", которая последовательно будет переключаться между функциями, и проверять состояние.
Но возникают вопросы: каким образом лучше отслеживать временные периоды, большая ли вероятность упустить событие. И в правильном ли направлении идет мысль в целом.
Надеюсь суть изложил понятно.
Для большей наглядности приведу конкретный пример:
Есть блок появление которого вызывается по клику на кнопку, по заданию, если пользователь не работает с данным блоком в течении минуты блок должен стать невидимым. Ясно, что если бы это блок был единственным то используя setTimeout() проблемы не возникало бы. Но в течении минуты пользователь может обратиться к другим блокам, задержка не сработает, блок не исчезнет.
Возможно я не понял суть, но если вешать на таймаут функцию, которая будет закрывать конкретный блок, то как этому помешают действия с другими блоками и таймаутами?
Как вариант, один общий счетчик (тот же setTimeout). Время отображения каждого блока заносим в массив. Счетчик, скажем, каждые пять секунд пробегается по этому массиву и определяет, какие из блоков следует скрыть на данной итерации. В массиве помимо времени отображения можно сразу хранить id блока, длительность отображения, всякие флаги, ну и так далее.
Counselor, Joker-jar спасибо, за ответы.
Возможно я не понял суть, но если вешать на таймаут функцию, которая будет закрывать конкретный блок, то как этому помешают действия с другими блоками и таймаутами?
Вот к примеру такой кусочек кода (на примере двух функций) :
function test(){
alert('Произойдет сброс timeout');
}
$('.block').hover(
function(){alert('Начало действия пользователя')},
function(){setTimeout(function(){$(this).slideUp(600);},30000)}
)
Если пользователь не вызывал test() 30 секунд, то block исчезнет, если же вызвал то timeout прекращается.
вообще у setTimeout есть возвращаемое значение - идентификатор таймера - его можно использовать для функции clearTimeout()
т.е. запускаете таймер на скрытие блока, если в результате каких-то действий скрывать не нужно - то clearTimeout()
Тут проблема только в хранении/получении нужных идентификаторов таймеров.
Дикий пионер, спасибо!
вообще у setTimeout есть возвращаемое значение - идентификатор таймера - его можно использовать для функции clearTimeout()
т.е. запускаете таймер на скрытие блока, если в результате каких-то действий скрывать не нужно - то clearTimeout()
Тут проблема только в хранении/получении нужных идентификаторов таймеров.