diff --git a/Observable.js b/Observable.js index 03545cd..2c80950 100644 --- a/Observable.js +++ b/Observable.js @@ -3,6 +3,7 @@ * @Date: 2018-02-01 17:41:25 * @Last Modified by: kael * @Last Modified time: 2018-02-02 17:38:36 + * 觀察者 */ class ObserverList { @@ -11,12 +12,20 @@ class ObserverList { } add(observer) { // todo add observer to list + this.observerList.push(observer); } remove(observer) { // todo remove observer from list + this.observerList.forEach((item,index)=>{ + item== observer && this.observerList.splice(index,1); + }) + } + get(i){ + return this.observerList[i]; } count() { // return observer list size + return this.observerList.length; } } @@ -26,12 +35,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 length = this.observers.count(); + for(var i =0; i { ob.unsubscribe('add', add); ob.publish('add', val); assert.ok(sum !== val); + + ob.subscribe('add', (val)=> val++); + ob.publish('add', val); + assert.ok( ++val === val); + }); });