zoukankan      html  css  js  c++  java
  • 经典的发布订阅者模式

    function Pubsub() {
    this.handlers = {};
    }
    Pubsub.prototype = {
    on: function (eventType, handler) {
    var self = this;
    if (!(eventType in self.handlers)) {
    self.handlers[eventType] = [];
    }
    self.handlers[eventType].push(handler)
    },
    emit: function (eventType) {
    var self = this;
    var handlerArgs = Array.prototype.slice.call(arguments, 1);
    for (var i = 0; i < self.handlers[eventType].length; i++) {
    self.handlers[eventType][i].apply(self, handlerArgs)
    }
    return self;
    },
    off: function (eventType, handler) {
    var currentEvent = this.handlers[eventType];
    var len = 0;
    if (currentEvent) {
    len = currentEvent.length;
    for (var i = len - 1; i >= 0; i--) {
    if (currentEvent[i] === handler) {
    currentEvent.splice(i, 1)
    }
    }
    }
    return this;
    }
    }

    var pubsub = new Pubsub();
    var callback = function (data) {
    console.log(data)
    }
    pubsub.on('A', function (data) {
    console.log(data + 1)
    })
    pubsub.on('A', function (data) {
    console.log(data + 2)
    })
    pubsub.on('A', callback)
    pubsub.emit('A', '参数')
    pubsub.off('A', callback)
    pubsub.emit('A', '二参数')
  • 相关阅读:
    PHPEXCEL 导出多个sheet
    android adb.exe端口占用
    imageview 显示assets的图片

    Java中日期问题
    java中的定时器的实现样例
    Oracle数据库如何干净的删除
    MySQL索引相关知识
    JavaScript基础知识总结
    JDBC技术总结
  • 原文地址:https://www.cnblogs.com/liuhao-web/p/8302845.html
Copyright © 2011-2022 走看看