事件处理函数去重
来源:8-16 手写EventBus自定义事件-包括on和once
hymanzhan
2022-04-15
老师你好,面试遇到了个类似的问题,追问的要求是问“在注册同一个事件的同一个处理函数的时候,如何做到去重?”
eventBus.on('event1', fn1)
eventBus.on('event1', fn1)
这种情况下需要fn1只被注册一次,有什么比较好的办法吗?
除了遍历之外,我想到的方法一个是用Set而不是用Array来存储这些函数,但这会导致一个无序的问题。一个是另定义一个Map和Set变量来存储每个事件已经注册的函数名,在注册前先检查这个Set里是否已经有这个函数。
写回答
1回答
-
hymanzhan
提问者
2022-04-15
是我基础没掌握好,Set在迭代的时候是根据插入顺序迭代的,那感觉Set方法可行。不过还是希望老师指点一下,看看有没有别的思路。
022022-04-15
相似问题