diff --git a/Observable.js b/Observable.js index 03545cd..0886bd2 100644 --- a/Observable.js +++ b/Observable.js @@ -11,12 +11,19 @@ class ObserverList { } add(observer) { // todo add observer to list + return this.observerList.push(observer); } remove(observer) { // todo remove observer from list + this.observerList = this.observerList.filter(item => item != observer); + } count() { // return observer list size + return this.observerList.length; + } + get(index) { + return this.observerList[index]; } } @@ -26,12 +33,18 @@ class Subject { } addObserver(observer) { // todo add observer + this.observers.add(observer); } removeObserver(observer) { // todo remove observer + this.observers.remove(observer); } notify(...args) { // todo notify + let observerCount = this.observers.count(); + for(let i=0; i item != fn); + } publish(type, ...args) { // todo publish + let listener = this.subscribers[type]; + if(!listener) { + return; + } + listener.forEach(element => { + element.call(this, ...args); + }); } }