zoukankan      html  css  js  c++  java
  • 事件总线(发布订阅模式)

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
      </head>
      <body>
        <script>
          class EventEmitter {
            constructor() {
              this.cache = {};
            }
            on(name, fn) {
              if (this.cache[name]) {
                this.cache[name].push(fn);
              } else {
                this.cache[name] = [fn];
              }
            }
            off(name, fn) {
              let tasks = this.cache[name];
              if (tasks) {
                const index = tasks.findIndex((f) => f === fn || f.callback === fn);
                if (index >= 0) {
                  tasks.splice(index, 1);
                }
              }
            }
            emit(name, once = false, ...args) {
              if (this.cache[name]) {
                let tasks = this.cache[name].slice();
                for (const fn of tasks) {
                  fn(...args);
                }
                if (once) {
                  delete this.cache[name];
                }
              }
            }
          }
    
          let eb = new EventEmitter();
          let f1 = function (name, age) {
            console.log(name + "f1 " + age);
          };
          let f2 = function (name, age) {
            console.log(name + "f2 " + age);
          };
          eb.on('aaa',f1)
          eb.off('aaa',f1)
          eb.on('aaa',f1)
          eb.on('aaa',f2)
          eb.on('bbb',f2)
          eb.emit('aaa',false,'hehe',12)
        </script>
      </body>
    </html>
    
  • 相关阅读:
    LeetCode: 18. 4Sum
    LeetCode:15. 3Sum
    Leetcode:1. Two Sum
    tensorflow placeholder
    Tensorflow变量
    13.git的简单使用
    13.Django1.11.6文档
    12.python进程协程异步IO
    12.Flask-Restful
    12.Django思维导图
  • 原文地址:https://www.cnblogs.com/samsara-yx/p/14621117.html
Copyright © 2011-2022 走看看