题解 | #发布订阅模式#

发布订阅模式

https://www.nowcoder.com/practice/569e1fd641be4fd797f12a28b763d709

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <script type="text/javascript">
      class EventEmitter {
        constructor() {
          this.emap = {}
        }
        on(ename, efn) {
          let efns = this.emap[ename]
          if (efns === undefined) {
            efns = []
            this.emap[ename] = efns
          }
          efns.push(efn)
        }
        emit(ename, ...args) {
          const efns = this.emap[ename]
          if (efns === undefined) {
            return
          }
          for (const fn of efns) {
            fn(...args)
          }
        }
        off(ename, efn) {
          const efns = this.emap[ename]
          for (let i = 0; i < efns.length; i++) {
            if (efns[i] === efn) {
              efns.splice(i, 1)
              break
            }
          }
          if (efns.length === 0) {
            delete this.emap[ename]
          }
        }
      }
    </script>
  </body>
</html>


全部评论

相关推荐

点赞 评论 收藏
分享
01-16 18:34
四川大学 Java
欢迎加入AI:没有啥稳定不稳定,一切都源于业务快速发展还是收缩。我当年一开始去的央企,业务不赚钱,也贼卷,慢慢就开始优化了。。。
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务