Open minhuaF opened 6 years ago
早上看笔试题目时,看到有一个阿里的笔试题目
实现一个EventEmitter类,这个类包含以下方法: on(监听事件,该事件可以被触发多次) once(也是监听事件,但只能被触发一次) fire(触发指定的事件) off(移除指定事件的某个回调方法或者所有回调方法)
class EventEmitter { /**请补充你的代码***/ } const event = new EventEmitter() const drank = (person) => { console.log(person + '喝水') } event.on('drank', drank) event.on('eat', (person) => { console.log(person + '吃东西') }) event.once('buy', (person) => { console.log(person + '买东西') }) event.fire('drank', '我') // 我喝水 event.fire('drank', '我') // 我喝水 event.fire('eat', '其它人') // 其它人吃东西 event.fire('eat', '其它人') // 其它人吃东西 event.fire('buy', '其它人') //其它人买东西 event.fire('buy', '其它人') //这里不会再次触发buy事件,因为once只能触发一次 event.off('eat') //移除eat事件 event.fire('eat', '其它人') //这里不会触发eat事件,因为已经移除了
根据提供这个题目的作者描述,这是一个订阅发布模式的题目。故收集下来,并巩固下这个模式的用法。
订阅发布模式定义的是一对多的关系,让多个订阅者同时监听某个发布者对象;这个发布者对象在自身状态发生变化时会通知所有订阅者,使他们能更新对应的状态。
前言
早上看笔试题目时,看到有一个阿里的笔试题目
实现一个EventEmitter类,这个类包含以下方法: on(监听事件,该事件可以被触发多次) once(也是监听事件,但只能被触发一次) fire(触发指定的事件) off(移除指定事件的某个回调方法或者所有回调方法)
根据提供这个题目的作者描述,这是一个订阅发布模式的题目。故收集下来,并巩固下这个模式的用法。
订阅发布模式
订阅发布模式定义的是一对多的关系,让多个订阅者同时监听某个发布者对象;这个发布者对象在自身状态发生变化时会通知所有订阅者,使他们能更新对应的状态。