用EventProxy,绑定监听事件,如果一直没触发,是不是监听会一直保留?
发布于 2天前 作者 kilobitcy 125 次浏览 来自 问答

用EventProxy,绑定监听事件,如果一直没触发,是不是监听会一直保留? 如果程序运行多次,会产生过个监听事件。会不会浪费系统资源?

4 回复

只有正确和不正确,没有浪费不浪费。

写个最简单的EventProxy,实际上本质就是这样的

class EventProxy {
    _events = {}    
    on(event, fn) {
        this._events[event] = fn;
    }   
    emit() {
        this._events[arguments[0]].apply(this, [].slice.call(arguments, 1));
    }
}

var eventProxy = new EventProxy();  
eventProxy.on('add', (name, age)=> {
    console.log(name, age);
}); 
eventProxy.emit('add', 'jacky', 10);

监听就是保存某个函数,触发就是执行某个函数而已。一直不触发,占据的就是一小块内存而已。

@yuyang041060120,谢谢你的答复。 那如果,程序有错误,又不断的被执行,举例100万次。那就监听(保存)了100万个函数。就算每个只占1K,那也快1G了啊。

@kilobitcy 监听和触发的函数是我们手动调用的,相当于api一样。至于你说的百万情况,估计得写个循环或递归才能实现了,实际上任何方法不都是可以调用多次么,只要我们愿意。

回到顶部