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

这不是内存泄漏吗?

0
0

双越

2022-03-21

好问题。

避免循环最常用的方式就是记录,例如用一个 Set ,每次 emit 就记录下 key ,然后判断是否有循环的 key 。可以照这个思路思考一下。

0
2
qq_confession十_0
能不能放到链表里面,如果判断链表闭环了,就不执行了。
2022-05-10
共2条回复

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

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

1509 学习 · 642 问题

查看课程