Внутренние элементы javascript: как реализованы события? - PullRequest
7 голосов
/ 02 ноября 2011

Мой вопрос связан с тем, как движки JS реализуют шаблон асинхронных событий, когда мы делаем что-то вроде обработчиков событий bind в dom for, скажем, событие click .?

Есть ли у них что-то вроде отдельного потока, который прослушивает все события нажатия? Когда событие происходит, они ссылаются на список привязок и всплывают события?

Аналогично Ajax, асинхронному сетевому вызову, когда браузер охватывает новый поток, который начинает прослушивать данные с сервера, а при получении ответа вызывает обработчик успеха?

1 Ответ

7 голосов
/ 02 ноября 2011

Прочтите этот пост об очереди событий javascript и посмотрите, отвечает ли она на большинство ваших вопросов.Будет собственный поток ОС, который обрабатывает взаимодействие с фактическими событиями ОС (событиями мыши, событиями клавиатуры, событиями таймера, событиями сетевого ввода-вывода и т. Д.), Которые затем передаются в очередь JS, где механизм JS может в дальнейшемотправить их в код Javascript.Количество отдельных потоков на уровне ОС зависит от конкретной реализации и, вероятно, зависит от реализации.

...