Size: a a a

2020 November 09

МА

Максим Ахмеров... in pro.js
Вопрос про обработку событий в браузере, скажите, кто запускает обработчик события при событии? Я предлагаю что походу работы браузера запускается js,  который работает всегда и мониторит любое действие  пользователя и запускает обработчик события, если пользователь подписался на него
источник

D

Danila in pro.js
Максим Ахмеров
Вопрос про обработку событий в браузере, скажите, кто запускает обработчик события при событии? Я предлагаю что походу работы браузера запускается js,  который работает всегда и мониторит любое действие  пользователя и запускает обработчик события, если пользователь подписался на него
Запускает обработчик браузер
источник

D

Danila in pro.js
Обработчик добавляет тот, кто пишет код
источник

D

Danila in pro.js
Добавление обработчка события - это и есть "подписаться"
источник

МА

Максим Ахмеров... in pro.js
А как он запускает этот обработчик?
источник

D

Danila in pro.js
Максим Ахмеров
А как он запускает этот обработчик?
В каком смысле - как?
источник

D

Danila in pro.js
Берёт и запускает
источник

D

Danila in pro.js
Ты говоришь браузеру через DOM API - браузер, когда наступет такое-то событие, выполни вот эту вот функцию.
источник

МА

Максим Ахмеров... in pro.js
Мне интересно как раз js ли работает в рантайме и запускает обработчики, мб при запуске браузера там стоит while true и при каждом тике отслеживает любое действие пользователя
источник

D

Danila in pro.js
Он именно это и делает
источник

D

Danila in pro.js
Максим Ахмеров
Мне интересно как раз js ли работает в рантайме и запускает обработчики, мб при запуске браузера там стоит while true и при каждом тике отслеживает любое действие пользователя
1) Зачем тебе эта информация?
2) Каждый браузер делает это так как считает нужным
3) Можешь сходить в исходники хромиума и посмотреть, если сможешь разобраться
источник

D

Danila in pro.js
К JS это не имеет прямого отношения
источник

D

Danila in pro.js
Максим Ахмеров
Мне интересно как раз js ли работает в рантайме и запускает обработчики, мб при запуске браузера там стоит while true и при каждом тике отслеживает любое действие пользователя
Так или иначе браузер кладёт в стек JS-машины вызов функции когда приходит время и она выполняется
источник

D

Danila in pro.js
Сделать это есть бесконечное количество способов, в общем-то
источник

DB

Dmitriy Barabanov in pro.js
Максим Ахмеров
Мне интересно как раз js ли работает в рантайме и запускает обработчики, мб при запуске браузера там стоит while true и при каждом тике отслеживает любое действие пользователя
JS  и браузер - разные программы. Каждая работает по своим правилам. Да, они взаимодействуют.

Если браузер увидел,что пришло время выполнить обработчик - он бежит и пинает JS с приказом выполнить вот эту функцию.

Да, JS, может быть в это время занят. Тогда браузер ставит ваш обработчик в очередь действий,которые надо выполнить JS. Когда все предыдущие задачи выполнятся и дойдет очередь до вашего обработчика - выполнится ваш обработчик
источник

D

Danila in pro.js
источник

МА

Максим Ахмеров... in pro.js
Мне интересно, js же однопоточный, то есть вот мой js который я ему скармливаю выполняется в одном потоке, а вот кто запускает   js обработчики(типа второй поток, который работает всегда), я думал это тоже js, но походу нет, надеюсь вы поняли про что я
источник

D

Danila in pro.js
источник

D

Danila in pro.js
Максим Ахмеров
Мне интересно, js же однопоточный, то есть вот мой js который я ему скармливаю выполняется в одном потоке, а вот кто запускает   js обработчики(типа второй поток, который работает всегда), я думал это тоже js, но походу нет, надеюсь вы поняли про что я
js - однопоточный, а браузер не обязан быть однопоточным
источник

D

Danila in pro.js
Запускает обработчики что-то за пределами JS, какой-то механизм внутри браузера
источник