2015-01-27 2 views
1

У меня есть метод, который запускается событием onmouseover. Каждый раз, когда он запускается, метод оценивает и обрабатывает элементы динамического массива. Есть ли способ написать метод, чтобы, если событие onmouseover вызывается еще до завершения метода обратного вызова, оно остановится и начнется снова, вместо того, чтобы ждать, пока оно не закончится, прежде чем начать снова?Как написать эффективные методы обратного вызова событий в javascript

+0

отправьте пожалуйста код. Я думаю, мы не знаем, что означает «обратный вызов» (запрос AJAX или функция обработчика событий Javascript). – Kai

+0

@calebboyd, что неверно - вы * можете * прервать JavaScript. См. Мой ответ. –

+0

Если ваш случай, когда вы запускаете слишком часто, вы можете отменить обработчик событий. '$ .debounce' или альтернатива ванили. В противном случае WebWorker может работать хорошо. – calebboyd

ответ

2

Если это чрезвычайно длительный процесс и/или большой массив, вы можете подумать о том, чтобы вызвать событие Web Worker. В основном он создает отдельный поток JavaScript, который может связываться с потоком DOM (поток, который вы почти исключительно используете в JavaScript) через сериализованные данные, которые могут быть подписаны на прослушиватели событий в каждом потоке. Преимущество этого заключается в том, что вы можете позвонить webWorker.terminate(), чтобы немедленно остановить его независимо от того, где он был достигнут.

+0

Web Worker классный, но я думаю, что я ищу что-то с немного большей поддержкой. – McShaman

+0

Ну, если ваш процесс не может быть прерван асинхронными обратными вызовами, вам будет сложно нажать «остановить» в середине выполнения. Обычный JavaScript не имеет резьбы. –

Смежные вопросы