EventEmitter на JavaScript.

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ส.ค. 2024
  • Всем привет! Это рубрика ДавайЗакодим. В этом выпуске мы закодим один из популярных паттернов проектирования - EventEmitter.
    Канал и чат в телеграме: t.me/first_fil...
    Ссылка на код: github.com/ooo...
    #frontend #js #javascript #web #урокипрограммирования #первыйфайлкомом #webdeveloper #давайзакодим #desingpatterns
    #паттерныпроектирования #pubsub #eventEmitter

ความคิดเห็น • 15

  • @2difficult2do
    @2difficult2do ปีที่แล้ว +4

    Работа с событиями полезная фича. Чайник включился :-) Спасибо. 👍

    • @first-file-comom
      @first-file-comom  ปีที่แล้ว +1

      Даа, полезная штука. На практике частенько использую к ней еще можно прикрутить postMessage и вообще пушка

  • @user-qz8kj3tr8i
    @user-qz8kj3tr8i 10 หลายเดือนก่อน +2

    Это лучшее объяснение и пример! Спасибо!

  • @RefuelTheRocket
    @RefuelTheRocket 7 หลายเดือนก่อน +2

    Спасибо, очень понятно и просто объяснил!

  • @ginhop1057
    @ginhop1057 9 หลายเดือนก่อน +1

    Объяснение топчик 👍

  • @manaraga9463
    @manaraga9463 ปีที่แล้ว +3

    мне как новичку который дошел до асинхронщины синтаксис непонятен, к сожалению первый раз вижу такие приватные поля, вместо привычного конструктора ((

    • @first-file-comom
      @first-file-comom  ปีที่แล้ว

      Привет! Вероятнее всего ты пропустил ролик на канале посвященный классам! Обязательно посмотри его =)
      th-cam.com/video/P2D647LZWAk/w-d-xo.html

    • @ultexplorer
      @ultexplorer 8 หลายเดือนก่อน +1

      @@first-file-comom Да, мне тоже непонятен этот синтаксис. Что за #listeners = {} вместо конструктора?

    • @first-file-comom
      @first-file-comom  8 หลายเดือนก่อน

      @@ultexplorer поля или методы которые начинаются с решетки являются приватными. т.е. к ним нельзя обратить когда создан инстанс класса. Рекомендую посмотреть видео про классы на канале.
      th-cam.com/video/P2D647LZWAk/w-d-xo.htmlsi=sqKgOM_aZ_KIuuc-
      А по поводу конструктора - его необязательно указывать при создании класса

    • @ultexplorer
      @ultexplorer 8 หลายเดือนก่อน

      const EventEmitter = function(){
      this.events = {}
      }
      EventEmitter.prototype.on = function (name, fn){
      const event = this.events[name];
      if(event) event.push(fn);
      else this.events[name] = [fn];
      }
      EventEmitter.prototype.emit = function (name, ...data) {
      const event = this.events[name];
      if(event) event.forEach(fn => fn(...data))
      }

    • @LHLetale
      @LHLetale 3 หลายเดือนก่อน

      @@ultexplorer думаю нужно больше учить синтаксис языка, раз такого не знаете

  • @RustemmKh
    @RustemmKh 2 หลายเดือนก่อน +1

    Почему две распечатки происходит? Первый - нормальный, второй - с отпиской?

    • @first-file-comom
      @first-file-comom  2 หลายเดือนก่อน

      Две распечатки, потому что в коде есть две подписки на одно и тоже событие умноженное на количество вызовов этого события (dispatch). Поэтому в консоль вывелось две.
      Там где происходит сохранение в переменную unsub это та же подписка, просто мы сохранили функцию (коллбэк) в переменную которая вернул метод subscribe.

  • @fuckpuc
    @fuckpuc 5 หลายเดือนก่อน +1

    Дай пожалуйста название темы Vs code пожалуйста 💜