Что означает синхронизация/асинхронность в таблице событий

Наткнулась на интересную таблицу событий на https://www.w3.org/TR/uievents. Однако я не знаком с категорией Sync/Async.

Тип события Синхронизация/Асинхронность Фаза пузырька Доверенное событие целевые типы Интерфейс DOM Отменяемый Действие по умолчанию щелкнуть Синхронизировать Да Элемент УказательСобытие Да Варьируется: для целей со связанным поведением активации выполняет поведение активации; для фокусируемых целей дает элементу фокус. ошибка Асинхронный Нет Окно, Элемент Событие Нет Никто вход Синхронизировать Да Элемент Инпутевент Нет Никто нагрузка Асинхронный Нет Окно, Документ, Элемент Событие Нет Никто наведение курсора мыши Синхронизировать Да Элемент MouseEvent Да Никто наведение курсора мыши Синхронизировать Да Элемент MouseEvent Да Никто выбирать Синхронизировать Да Элемент Событие Нет Никто разгружать Синхронизировать Нет Окно, Документ, Элемент Событие Нет Никто колесо Асинхронный Да Элемент КолесоСобытие Да Прокрутите (или масштабируйте) документ

Может кто-нибудь объяснить, что означает эта категория?

Например: в чем разница между событием щелчка Sync и событием колеса Async?

Я не могу получить доступ к сайту, поэтому не совсем уверен, но обычно синхронизация/асинхронизация связана с блокировкой. Думаю, Sync щелчки будут блокировать друг друга, а Async колеса — нет.

Lã Ngọc Hải 12.07.2024 10:11

@LãNgọcHảпопробуйте использовать прокси или сайт web.archive.org, чтобы открыть мою ссылку. Было бы здорово, если бы можно было дать ответ.

MaximPro 12.07.2024 10:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
104
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Раньше был раздел, объясняющий это, вы все еще можете увидеть его в предыдущей редакции того же документа.

Он читает

События могут отправляться синхронно или асинхронно.

Синхронные события («события синхронизации») рассматриваются так, как если бы они были находятся в виртуальной очереди по модели «первым пришел — первым обслужен», упорядоченной по последовательность временных событий по отношению к другим событиям, чтобы изменения в DOM и взаимодействие с пользователем. Каждое событие в этом виртуальная очередь задерживается до тех пор, пока предыдущее событие не завершит свою работу поведение распространения или было отменено. Некоторые события синхронизации управляются конкретное устройство или процесс, например события кнопки мыши. Эти события регулируются событием заказать алгоритмы, определенные для этого набора событий, и пользовательские агенты будут отправлять эти события в определенном порядке.

Асинхронные события («асинхронные события») могут отправляться как результаты действия являются завершенными, не имеющими отношения к другим события, другие изменения в DOM или взаимодействие с пользователем.

[ПРИМЕР 3] Во время загрузки документа анализируется и выполняется встроенный элемент сценария. нагрузка событие есть поставлен в очередь для асинхронного запуска в элементе сценария. Однако, поскольку это асинхронное событие, его порядок относительно других синхронные события, возникающие во время загрузки документа (например, Событие DOMContentLoaded от [HTML5]) не гарантируется.

Он был удален вместе с родительским разделом как часть https://github.com/w3c/uievents/issues/372, что указывает на то, что родительский раздел уже в основном охвачен спецификациями DOM. Однако это правда, что конкретная информация о синхронизации/асинхронности также отсутствует, и поэтому эта концепция больше ничем не подкреплена.

Я добавил комментарий к проблеме, чтобы сообщить им об этом.

Ps: надеюсь, что однажды все спецификации UI Events перейдут в собственность WHATWG и станут менее «магическими».

Kaiido 12.07.2024 10:37

Ммм интересно. Но больше всего меня интересует порядок выполнения синхронных событий с асинхронными. Допустим, у нас накопилась очередь из 100 событий кликов, при добавлении в эту очередь кликов по 60-му элементу (на момент добавления) произошло событие загрузки. Каков тогда порядок исполнения? Предположим, что компьютер просто долго думает и поэтому возникла такая очередь :)

MaximPro 12.07.2024 12:40

Поскольку они не будут использовать один и тот же источник задач, и один синхронизирован, а другой асинхронен, это реализация определена, и браузеры имеют различные эвристики, чтобы решить, какую задачу они предпочтут другой, например. у них есть некоторая система голодания, позволяющая избежать слишком долгого запуска одного и того же источника задач, даже если он обычно имеет более высокий приоритет (щелчок IIRC будет иметь более высокий приоритет, по крайней мере, в Chrome и FF).

Kaiido 12.07.2024 14:36

Простите, а что вы имеете в виду, когда говорите, что они используют не одни и те же источники задач? Это где-то в характеристиках написано?

MaximPro 13.07.2024 09:43

Также есть примечание : There can be interactions between different event orders. For example, a click event might be modified by a concurrent keydown event (e.g., via Shift+click). However, the event orders of these different event sources would be distinct. Что значит click might be modified?

MaximPro 13.07.2024 13:17

1/2 Вы не сказали, какое событие загрузки запускается, поэтому сложно указать конкретное место в спецификации, но вы можете начать с html.spec.whatwg.org/#event-load , нажмите на значок «загрузить» гиперссылку, чтобы увидеть перекрестные ссылки. Там, если мы возьмем, например. для <style> мы видим, что мы из источника сетевой задачи, для документа мы находимся в одном манипе DOM. К сожалению, для клика он плохо определен (еще раз надеюсь, что WHATWG скоро возьмет на себя ответственность и за него)

Kaiido 13.07.2024 14:41

2/2, но общепринято, что для них предназначен источник задач пользовательского интерфейса. Что касается измененного события, они означают такие свойства, как ctrlKey, altKey или конкретно здесь shiftKey, а также другие, которые зависят от других событий от других устройств (здесь от клавиатурных).

Kaiido 13.07.2024 14:41

Подводя итог моему пониманию: синхронные события — это события, которые зависят от других событий, например, нажатие левой кнопки мыши запускает группу событий mousedown -> mouseup -> click как задачу; Напротив, асинхронные события — это те, которые не имеют зависимости от других событий, поэтому загрузка картинки или скрипта, который поставит задачу «завершить загрузку», и событие load будет независимым от других событий. Но есть нюанс: событие abort указано асинхронным, как это понимать? Как ты понимаешь это Кайидо?

MaximPro 13.07.2024 21:21

И еще, событие колеса указано как асинхронное, но почему? Это полностью синхронно, если я правильно понял всю теорию, ctrl+wheel up меняет поведение в документе, он переключается с прокрутки на изменение размера. Что-то здесь не так.

MaximPro 13.07.2024 21:29

Честно говоря, я не знаю, как они выбирали, какой из них должен быть синхронизирован, какой из них должен быть асинхронным. Действительно, очень удивительно, что колесо является асинхронным, а отмена - синхронизированным, но ваше понимание все равно кажется неправильным: между нажатием кнопки мыши вниз и вверх может быть много задач и много событий от одного и того же устройства (например, перемещение мыши при перетаскивании). Но поскольку они приходят с одного и того же устройства, синхронизировать нужно не те. Вместо этого клавиатура и мышь отправляют свои события одновременно.

Kaiido 14.07.2024 08:41

Возьмем, к примеру, эту скрипту: jsfiddle.net/yh98tfs1 При нажатии клавиши Shift цикл событий блокируется на 3 секунды. Если вы нажмете в течение этих 3 секунд, вы могли либо уже отпустить клавишу Shift, если событие мыши shiftKey должно быть ложным, либо вы могли бы все еще нажимать ее. Поскольку объект Event будет создан только после того, как цикл событий снова будет освобожден, потенциальное событие нажатия клавиши должно быть запущено в том же порядке, в котором оно было запущено относительно события mousedown, чтобы при построении события мыши оно имело правильный состояние. Их необходимо синхронизировать.

Kaiido 14.07.2024 08:41

Также обратите внимание, что они работают над тем, чтобы полностью избавиться от этого понятия и вместо этого разработать более алгоритмическую спецификацию: w3c.github.io/uievents/event-algo.html Я не думаю, что вам следует тратить слишком много времени. в этом плане известно, что это плохо.

Kaiido 14.07.2024 08:42

Ну я вроде все правильно понял, следуя порядку событий , когда я описывал порядок трёх событий мыши, это относится к порядку процесса (да, то, что вы расширили другими событиями, необязательно, я видел это в спецификации здесь), а ваш пример со скрипкой относится к порядку устройства. Или я ошибаюсь?

MaximPro 14.07.2024 23:09

Не могли бы вы привести примеры этого предложения: Some sync events are driven by a specific device or process? Что движет устройством, а что — процессом? Если вы объясните этот момент, я обязательно пойму концепцию, это последнее, что я хотел знать. P.S. Извините, за много вопросов.

MaximPro 15.07.2024 01:42

Другие вопросы по теме