Skip to content

Instantly share code, notes, and snippets.

@thanhlmm
Created November 1, 2016 10:11
Show Gist options
  • Save thanhlmm/0ee60f6854cb0344194f5cd48df7108e to your computer and use it in GitHub Desktop.
Save thanhlmm/0ee60f6854cb0344194f5cd48df7108e to your computer and use it in GitHub Desktop.
Hiện thực thử EventEmitter của CuThanh
"use strict"
class EventEmitter {
constructor() {
this.listener = []
}
addListener(event, listener) {
if (this.listener[event]) {
this.listener[event].push(listener)
} else {
this.listener[event] = Array(listener)
}
console.log ("Added new listener")
console.log (this.listener)
return {event: event, index: this.listener[event].indexOf(listener)}
}
removeListener(listenerInfo) {
this.listener[listenerInfo.event].splice(listenerInfo.index, 1)
console.log ("Removed a listener")
console.log (this.listener)
}
emit(event, arg) {
if (this.listener[event]) {
this.listener[event].forEach((x) => x(arg))
}
console.log ("Emitted "+event)
}
}
let cuThanh = new EventEmitter
let thangA = cuThanh.addListener("GOI500AE", () => {
console.log ("A: T đang tiêu chảy, đếu kíu được mày đâu. Gọi thằng B coi")
})
let thangB = cuThanh.addListener("GOI500AE", () => {
console.log ("B: Mày bảo tụi nó đợi tao 5′, để tao gọi 500 anh em ra cứu bạn gái mày.")
})
cuThanh.emit("GOI500AE")
cuThanh.removeListener(thangA)
cuThanh.emit("GOI500AE")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment