class EventHandler { constructor(worker) { this.events = {}; this.worker = worker; this.worker.addEventListener('message', this.handleEvent.bind(this)); } addEvent(name, cb) { this.events[name] = cb; } sendData(name, status, data) { this.worker.postMessage({ cmd: name, status: status, data: data }); } handleEvent(event) { let data = event.data; if (!data.cmd) { return; } if (this.events[data.cmd]) { this.events[data.cmd](data.data); } } }