Skip to content

Instantly share code, notes, and snippets.

@jiaming0708
Created August 29, 2017 13:36
Show Gist options
  • Save jiaming0708/eeb7fb552d14a06690665ba27a013154 to your computer and use it in GitHub Desktop.
Save jiaming0708/eeb7fb552d14a06690665ba27a013154 to your computer and use it in GitHub Desktop.
observer
var egghead = new Producer();
function listener1(message) {
console.log(message + 'from listener1');
}
function listener2(message) {
console.log(message + 'from listener2');
}
egghead.addListener(listener1); // 註冊監聽
egghead.addListener(listener2);
egghead.notify('A new course!!') // 當某件事情方法時,執行
class Producer {
listeners = [];
constructor() {
}
addListener(listener) {
if(typeof listener === 'function') {
this.listeners.push(listener)
} else {
throw new Error('listener 必須是 function')
}
}
removeListener(listener) {
this.listeners.splice(this.listeners.indexOf(listener), 1)
}
notify(message) {
this.listeners.forEach(listener => {
listener(message);
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment