Является ли JavaScript однопоточным? Если нет, как я могу получить синхронизированный доступ к общим данным?

У меня есть веб-страница сDIVсmouseover обработчик, предназначенный для отображения всплывающего информационного пузыря. Я не хочу, чтобы за один раз было видно больше одного информационного пузыря. Но когда пользователь быстро перемещает мышь над двумя предметами, я иногда получаю два пузыря. Этого не должно быть, потому что код для показа всплывающего окна отменяет предыдущее всплывающее окно.

Если бы это была многопоточная система, то проблема была бы очевидна: два потока пытаются показать всплывающее окно, и оба они отменяют существующие всплывающие окна, а затем всплывают свои собственные всплывающие окна. Но я предположил, что JavaScript всегда выполняется однопоточным, что предотвратит это. Я ошибаюсь? Работают ли обработчики событий асинхронно, и в этом случае мне нужен синхронизированный доступ к общим данным, или я должен вместо этого искать ошибки в коде библиотеки для отмены всплывающих окон?

Отредактировано, чтобы добавить:

Библиотека, о которой идет речьПРОСТОЙ Хронология и его библиотека Ajax;Обработчик события вызываетSimileAjax.DOM.cancelEvent(domEvt), который, как я полагаю, основан на названии, отменяет всплеск событий;Просто чтобы усложнить ситуацию, я на самом деле начинаю тайм-аут, который не отменяетсяmoustout показывает всплывающее окно, это предназначено для предотвращения всплывающих всплывающих окон, раздражающих, но раздражающе имеющих обратный эффект.

Я еще раз попробую и посмотрю, смогу ли я понять, где я иду не так. :-)

Ответы на вопрос(7)

Ваш ответ на вопрос