EventEmitter icon indicating copy to clipboard operation
EventEmitter copied to clipboard

Event emitter class

Open maphy9 opened this issue 2 years ago • 0 comments

У методі once ми створюємо обгортку для переданої функції, щоб видаляти цю функції з події після першого її застосування, потім записуємо цю обгортку до хеш-таблиці wrappers та використовуємо метод on, у який передаємо назву події та обгортку, тобто після цього events буде виглядати приблизно так: { name: [wrapper] }. Метод on запише в events передану функцію (у цьому випадку обгортку функції) під ключем назви події. У методі remove ми шукаємо подію та видаляємо з неї передану функцію, але якщо така функція не знайдена, то ми шукатимемо її в хеш-таблиці wrappers. Справа в тому, що в методі once ми завжди записуємо в events обгортку функції та видаляємо саме обгортку. Тоді при видаленні функції з події після виконання once ми завжди будемо знаходити потрібну обгортку та не треба буде шукати в хеш-таблиці wrappers функцію, яка лежить в обгортці.

maphy9 avatar Nov 04 '23 15:11 maphy9