Я пишу драйвер событий для проекта, над которым я работаю, и я использую стандартную систему событий браузера в качестве модели, что заставило меня посмотреть его более подробно. Я тестирую вещи на Edge и Firefox.document.documentElement.addEventListener("click", () =>
{
console.log("Handler 1");
document.documentElement.addEventListener("click", () => console.log("Handler 2"));
return;
});
< /code>
Когда элемент документа нажимается в первый раз, вывод в консоли: < /p>
Handler 1
< /code>
Из этого может показаться, что, хотя конечный результат - два события, связанные по порядку (обработчик 1 и обработчик 2), обработчик, добавленный в другой обработчик событий, не добавляется к в настоящее время обработанной очереди.const handler2 = () => console.log("Handler 2");
document.documentElement.addEventListener("click", () =>
{
console.log("Handler 1");
document.documentElement.removeEventListener("click", handler2);
return;
});
document.documentElement.addEventListener("click", handler2);
< /code>
Когда элемент документа нажимается, вывод в консоли также: < /p>
Handler 1
< /code>
Во втором случае два обработчика изначально связаны в порядке, и я бы предположил, что очередь событий содержит оба, когда обработчик 1 изначально запускается, но удаление обработчика событий достаточно, чтобы также удалить его из обработанного в настоящее время. Я не понимаю, почему удаление слушателя повлияет на очередь событий. Если браузер не обновляет очередь при добавлении события по соображениям производительности, то, конечно же, эти причины также применяются при удалении. Я также подумал, что логическая вещь состоит в том, чтобы две операции ведут себя последовательно.
Подробнее здесь: https://stackoverflow.com/questions/796 ... rently-fro
Почему добавление обработчика событий во время обработчика, кажется, работает иначе, от его удаления? ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Обнаружение щелчка внутри/снаружи элемента с помощью одного обработчика событий
Anonymous » » в форуме Jquery - 0 Ответы
- 43 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как преобразовать CoreDispatcher в DispatcherQueue для обработчика событий AudioGraph
Anonymous » » в форуме C# - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как преобразовать CoreDispatcher в DispatcherQueue для обработчика событий AudioGraph
Anonymous » » в форуме C# - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-