【问题标题】:How to create a message every time an event is emitted每次发出事件时如何创建消息
【发布时间】:2021-09-19 15:33:21
【问题描述】:

我正在尝试实现一个应用程序,该应用程序在每次节拍滴答声时为每个歌词创建一个“.message”。但是,我在尝试提出算法时似乎碰壁了。

我的代码:

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);
  }
}

【问题讨论】:

    标签: javascript algorithm events


    【解决方案1】:

    您正在订阅 'update' 事件,该事件从未被触发。

    固定代码sn-p:

        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);
        })
    

    【讨论】:

    • 这正是我想要的!但是,我必须使用的验证器给了我一个错误gitlab.com/boomdotdev/validator/-/jobs/1603099801
    • @koko 你可以尝试不同的方法来连接监听器。就像用“addListener”替换“on”一样。我不知道验证器如何在内部工作。但是代码已经完全按照它的要求去做了。
    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多