.click () заставляет событие отправлять синхронно, поэтому скрипт, который вызывает .click (), все еще находится в стеке между обратными вызовами.
Он просматривает ответ, но этов основном это. Не собираясь притворяться, что я полностью понимаю детали, но когда я читаю это: поскольку щелчок запускается изнутри JavaScript в том же «фрейме», что и код, который настраивает прослушиватели событий И запускает событие таким образом, синхронные обратные вызовызапускаются сразу после этого, потому что это не позволяет проверить очередь микрозадачи на наличие мутаций.
В первом случае «установка» завершается, а этот «кадр» заканчивается. Так что, только нажав в браузере, что-то срабатывает, что затем произойдет в другом кадре (асинхронно), и так как никакой другой «кадр» не запускается в этот момент, он идет вперед и сначала проверяет очередь на наличие микрозадач на предмет мутации.
Приведенное выше правило гарантирует, что микрозадачи не прерывают JavaScript, который выполняется в середине.
И это, вероятно, является причиной того, почему этого не делается, что имеет смысл, так как все этооднопоточным (вы знаете, вроде), что имеет смысл позволить этому «кадру» закончить.
Таким образом, причуды действительно в том, что запуск события запрограммированно вынуждает все это в синхронную землю.