全局订阅发布模式-阿里云开发者社区

开发者社区> 云计算> 正文

全局订阅发布模式

简介: var Event = (function () { var clientList = {}, listen, trigger, remove listen = function (key, fn) { if (!cli...
var Event = (function () {
    var clientList = {},
        listen,
        trigger,
        remove
    listen = function (key, fn) {
        if (!clientList[key]) {
            clientList[key] = []
        }
        clientList[key].push(fn)
    }
    trigger = function () {
        var key = [].shift.apply(arguments),
            fns = clientList[key]
        if (!fns || !fns.length) {
            return
        }
        for (var i = 0, fn; fn = fns[i++];) {
            fn.apply(this, arguments)
        }
    }
    remove = function (key, fn) {
        var fns = clientList[key]
        if (!fns) {
            return
        }
        if (!fn) {
            fns && (fns.length = 0)
        } else {
            for (var l = fns.length - 1; l >= 0; l--) {
                if (fns[l] === fn) {
                    fns.splice(l, 1)
                }
            }
        }
    }
    return {
        listen: listen,
        trigger: trigger,
        remove: remove
    }
})()

Event.listen('88', function (data) {
    console.log(data, '88')
})
Event.trigger('88', 1232)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章