Почему добавление обработчика событий во время обработчика, кажется, работает иначе, от его удаления?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Почему добавление обработчика событий во время обработчика, кажется, работает иначе, от его удаления?

Сообщение Anonymous »

Я пишу драйвер событий для проекта, над которым я работаю, и я использую стандартную систему событий браузера в качестве модели, что заставило меня посмотреть его более подробно. Я тестирую вещи на 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»