es6 发布-订阅模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6 发布-订阅模式相关的知识,希望对你有一定的参考价值。

class Event {
    constructor() {
        //保存事件列表
        this.eventList = [];
    }
    on(key,fn){
        if ( !this.eventList[ key ] ){ 
            this.eventList[ key ] = []; 
        } 
        this.eventList[ key ].push( fn );
    }
    trigger(){
        var key = Array.prototype.shift.call( arguments ),
            fns = this.eventList[ key ]; 
        if ( !fns || fns.length === 0 ){
            return false; 
        } 
        for( var i = 0, fn; fn = fns[ i++ ]; ){ 
            fn.apply( this, arguments );
        } 
    }
}

//继承
class Test extends Event {
    constructor() {
        super();
        this.init();
    }
    init(){
        window.setTimeout(()=>{
            this.trigger(‘test‘,‘word:123‘,‘key:test‘);
        },3000);
    }
}

let t = new Test();

t.on(‘test‘,(word,key)=>{
    alert(word);
    alert(key);
});

//重复注册
t.on(‘test‘,(word,key)=>{
    alert(key);
    alert(word);
});

 

以上是关于es6 发布-订阅模式的主要内容,如果未能解决你的问题,请参考以下文章

用es6方式的写的订阅发布的模式

设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)

ES6入门系列 ----- 使用Proxy 实现观察者模式

EventBus发布-订阅模式 ( 使用代码实现发布-订阅模式 )

VScode插件推荐

EventBus发布-订阅模式 ( Android 中使用 发布-订阅模式 进行通信 )