Как создавать сообщение каждый раз при отправке события

#javascript #algorithm #events

Вопрос:

Я пытаюсь реализовать приложение, которое создает «.сообщение» для каждого текста каждый раз, когда такт тикает. Однако, похоже, я наткнулся на стену, пытаясь придумать алгоритм.

Мой код:

 import EventEmitter from "eventemitter3";
import Beat from "./Beat";

export default class Application extends EventEmitter {
  static get events() {
    return {
      READY: "ready",
    };
  }

  constructor() {
    super();
    
    this._beat = new Beat();
    this._create();

    this.emit(Application.events.READY);
  }
  _create() {
    const lyrics = ["Ah", "ha", "ha", "ha", "stayin' alive", "stayin' alive"];
    let count = 0;

    this._beat.on("update", (bit) => {
      const message = document.createElement("div");
      message.classList.add("message");
      message.innerText = lyrics[bit];

      document.querySelector(".main").appendChild(message);
    })
  }
}
 

Интервал биения:

 import EventEmitter from "eventemitter3";
export default class Beat extends EventEmitter{
  static get events() {
    return {
      BIT: "bit",
    };
  }

  constructor() {
    super();
    setInterval(() => {
      console.log("bit");
      this.emit(Beat.events.BIT);
    }, 600);
  }
}
 

Ответ №1:

Вы подписываетесь на 'update' событие, которое никогда не запускается.

Исправлен фрагмент кода:

     this._beat.on(Beat.events.BIT, (bit) => {
      const message = document.createElement("div");
      message.classList.add("message");
      message.innerText = lyrics[bit];

      document.querySelector(".main").appendChild(message);
    })
 

Комментарии:

1. Это сделало именно то, что я хотел! Однако валидатор, который я должен использовать, выдает мне ошибку gitlab.com/boomdotdev/validator/-/jobs/1603099801

2. @koko вы можете попробовать различные способы подключения слушателя. Например, заменить «вкл» на «аддЛистенер». Я не знаю, как валидатор работает внутренне. Но код уже делает именно то, что он просит.