事件处理函数去重

来源: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方法可行。不过还是希望老师指点一下,看看有没有别的思路。

0
2
hymanzhan
回复
双越
好的,谢谢老师
2022-04-15
共2条回复

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1509 学习 · 642 问题

查看课程