#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 вы можете попробовать различные способы подключения слушателя. Например, заменить «вкл» на «аддЛистенер». Я не знаю, как валидатор работает внутренне. Но код уже делает именно то, что он просит.