B站面试题:如何解决发布订阅模式中的循环问题
来源:8-16 手写EventBus自定义事件-包括on和once
infjer
2022-03-21
老师好,这节内容我想起了之前在B站面试时遇到的问题,面试官让我手写一个发布订阅模式,当时把伪代码和思路给讲出来了(看过设计模式一书)。然后面试官追问了一句,如何解决发布订阅模式中的循环问题,比如:
const A = () => {
// 一些处理
e.emit('y')
}
const B = () => {
// 一些处理
e.emit('x')
}
e.on('x', A)
e.on('y', B)
e.emit('x')
然后当时我就😳懵了,因为书上没写。所以,我想问的是,这个问题,面试官想考察的是啥啊?该如何回答?
写回答
2回答
-
GZ77
2023-05-03
这不是内存泄漏吗?
00 -
双越
2022-03-21
好问题。
避免循环最常用的方式就是记录,例如用一个 Set ,每次 emit 就记录下 key ,然后判断是否有循环的 key 。可以照这个思路思考一下。
022022-05-10
相似问题