From 8167ded352dfca8fd81bfbaaecb6f5cbdd58d58b Mon Sep 17 00:00:00 2001 From: Vladislav Date: Sun, 26 Jan 2025 19:49:46 +0300 Subject: [PATCH] added examles --- js/element-addeventlistener/index.md | 3 +- .../practice/vladislav149.md | 48 ++++++++++++++++++ people/vladislav149/index.md | 7 +++ people/vladislav149/photo.jpg | Bin 0 -> 15661 bytes 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 js/element-addeventlistener/practice/vladislav149.md create mode 100644 people/vladislav149/index.md create mode 100644 people/vladislav149/photo.jpg diff --git a/js/element-addeventlistener/index.md b/js/element-addeventlistener/index.md index 40eea19b19..d6d0304cbf 100644 --- a/js/element-addeventlistener/index.md +++ b/js/element-addeventlistener/index.md @@ -6,6 +6,7 @@ authors: contributors: - nlopin - skorobaeus + - vladislav149 related: - js/dom - js/events @@ -55,7 +56,7 @@ element.addEventListener('click', function (event) { 🤖 Заранее созданные функции обычно используют, когда функция содержит в себе много кода или к ней нужно ссылаться несколько раз. Например, когда нужно отписаться от события позже. Для отписки используется метод элемента [`Element.removeEventListener()`](/js/element-removeeventlistener/). -Второй способ отписки от события можно реализовать с помощью объекта AbortController. +Альтернативный способ отписки от события можно реализовать с помощью объекта AbortController. Анонимные функции удобно использовать при быстрой разработке или когда обработчик создаётся в одном единственном месте и выносить его в отдельную именованную функцию — дольше, чем писать код самой этой функции. В этом случае очень часто используют короткую, стрелочную запись функции: diff --git a/js/element-addeventlistener/practice/vladislav149.md b/js/element-addeventlistener/practice/vladislav149.md new file mode 100644 index 0000000000..3c806b1a9e --- /dev/null +++ b/js/element-addeventlistener/practice/vladislav149.md @@ -0,0 +1,48 @@ +🛠 Базовый пример использования `AbortController` для отписки от слушателя событий + +По умолчанию в большинстве случаев для отписки стоит использовать `removeEventListener`. Но, если при подписке была использована анонимная функция, то отписаться от такого слушателя через `removeEventListener` не получится, так как мы вторым параметром должны передать ссылку на функцию-обработчик. + +```js +const abortController = new AbortController() +const element = document.querySelector('#element1') + +element.addEventListener('click', () => console.log('Подписка активна'), { + signal: abortController.signal, +}) + +// Вызываем когда захотим отписаться: +controller.abort() +``` + +🛠 Отписка сразу от нескольких обработчиков. + +`AbortController` может быть удобнее, чем `removeEventListener` в случае, если нам нужно отписаться сразу от нескольких обработчиков + +```js +const abortController = new AbortController() +const element1 = document.querySelector('#element1') +const element2 = document.querySelector('#element2') + +element1.addEventListener('click',()=>{ + // ... +}, {signal: abortController.signal}) +element2.addEventListener('click',()=>{ + // ... +}, {signal: abortController.signal}) + +// отписываемся одним вызовом сразу от двух обработчиков +abortController.abort() +``` + +🛠 Вешаем слушатель событий на `AbortController` + +В случае, если необходимо реализовать логику после отписки, то используя `AbortController` можно слушать событие `abort` на `AbortSignal` + +```js +const abortController = new AbortController() +const signal = abortController.signal + +signal.addEventListener('abort', () => { + console.log('Операция была отменена'); +}); +``` \ No newline at end of file diff --git a/people/vladislav149/index.md b/people/vladislav149/index.md new file mode 100644 index 0000000000..7287104550 --- /dev/null +++ b/people/vladislav149/index.md @@ -0,0 +1,7 @@ +--- +name: 'Окенчиц Владислав' +url: https://t.me/Vlad_Okenchits +photo: 'photo.jpg' +--- + +Senior Frontend Developer \ No newline at end of file diff --git a/people/vladislav149/photo.jpg b/people/vladislav149/photo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ba504b9a7f3343e1316c6a16ac6701b4b6b6210 GIT binary patch literal 15661 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 TsG3rP>jDiL