JavaScript 釋出/訂閱模式
阿新 • • 發佈:2018-11-27
釋出訂閱模式可以理解為:
使用者關注一個了微信公眾號(訂閱),當公眾號有內容更新時會推送(釋出)給所有關注該公眾號的使用者。
廢話不多說直接上程式碼(此demo僅幫助理解發布/訂閱模式):
let Observable = { observers:[], // 訂閱者集合 addObserver:function (observer) { // 新增訂閱者 this.observers.push(observer) }, removeObserver:function (observer) { // 移除訂閱者 let index = this.observers.indexOf(observer); if(~index){ this.observers.splice(index,1); } }, notifyObservers:function (message) { // 向訂閱者釋出訊息 for(let i = 0; i <= this.observers.length-1; i++){ this.observers[i](message); } } }; function observer1(message){ console.log(`1---------${message}`); } function observer2(message){ console.log(`2---------${message}`); } function observer3(message){ console.log(`3---------${message}`); } // 新增訂閱者 Observable.addObserver(observer1); Observable.addObserver(observer2); Observable.addObserver(observer3); // 向訂閱者釋出(通知)訊息 Observable.notifyObservers('hello'); // 移除訂閱者 Observable.removeObserver(observer1); Observable.notifyObservers('test'); 輸出結果為: 1---------hello 2---------hello 3---------hello 2---------test 3---------test