Pregunta de entrevista de Meta

Round 2: Implement an event emitter class

Respuesta de la entrevista

Anónimo

12 de sept de 2017

export default class Emitter { constructor() { this.events = {}; } subscribe(event, callback) { const subscription = (() => { const emitter = this; return { release() { emitter.events[event] = emitter.events[event].filter(s => s !== callback); }, }; })(); if (event in this.events) { this.events[event].push(callback); } else { this.events[event] = [callback]; } return subscription; } emit(event, ...params) { if (event in this.events) { this.events[event].forEach((s) => { s.call(this, ...params); }); } } }