当前位置: 首页 > Web前端 > HTML

如何实现一个简单的发布-订阅模型

时间:2023-03-29 13:06:03 HTML

鑳屾櫙鍦ㄤ笟鍔″紑鍙戜腑锛屾垜浠粡甯镐細閬囧埌澶勭悊璺ㄩ〉闈㈤€氫俊鐨勯棶棰樸€備緥濡傦紝褰撶敤鎴锋墦寮€涓€涓綉绔欐椂锛岀綉绔欑殑鏌愪簺椤甸潰闇€瑕佹牴鎹敤鎴风殑鐧诲綍鐘舵€佽€屾湁鎵€涓嶅悓銆?鏄剧ず涓嶅悓鐨勬暟鎹€傛樉鐒讹紝杩欏氨闇€瑕佹垜浠湪鐧诲綍鎴愬姛鐨勯偅涓€鍒婚€氱煡閭d簺闇€瑕佹洿鏀圭殑椤甸潰銆備负浜嗚В鍐宠繖鏍风殑闂锛屽彂甯?璁㈤槄妯″瀷璇炵敓浜嗐€傛€濊矾涓€涓畝鍗曠殑鍙戝竷-璁㈤槄妯″瀷锛岃姹備簨浠剁粦瀹氬拰瑙﹀彂鐩镐簰闅旂锛屾敮鎸佸姩鎬佸鍒犱簨浠躲€傚熀浜庢锛屾湁涓€涓€濊矾锛氬畾涔変竴涓彉閲忔潵瀛樺偍杩欎簺浜嬩欢瀹氫箟涓€涓粰浜嬩欢鍙橀噺娣诲姞浜嬩欢鐨勭洃鍚柟娉曞畾涔変竴涓粠鍙橀噺涓Щ闄や簨浠剁殑鍒犻櫎鏂规硶瀹氫箟涓€涓Е鍙戞柟娉曚负鏍规嵁涓婇潰鐨勬€濊矾锛屽彲浠ュぇ鑷寸煡閬撶敤娉曠被浼间簬浠ヤ笅鍐呭锛歷aremitter=newEventEmitter();varhandle=function(data){console.log(data)}//椤甸潰A璁㈤槄LOGIN浜嬩欢emitter.on('LOGIN',handle)//鐧诲綍鎴愬姛锛岃Е鍙戦噴鏀緀mitter.emit('LOGIN',{user:{name:'Jan',age:18}})鍏蜂綋浠g爜瀹炵幇functionEventEmitter(){//浜嬩欢鍙橀噺this._event={}}//娣诲姞璁㈤槄EventEmitter.prototype.on=function(type,handle){this._event[type]=this._event[type]||[]this._event[绫诲瀷]銆俻ush(handle)}//绉婚櫎璁㈤槄EventEmitter.prototype.remove=function(type,handle){varindex=(this._event[type]||[]).indexOf(handle)if(index!==-1){this._event[type].splice(index,1)}}//瑙﹀彂閲婃斁EventEmitter.prototype.emit=function(type,data){(this._event[type]||[]).forEach(function(handle){handle(data)})}Howtoimplementasimplepublish-subscribemodel棣栧彂浜庤仛浜皬绔欙紝濡傛灉瀵逛綘鏈夊府鍔╋紝鍒繕浜嗙偣璧炴敮鎸侌煄?/p>

最新推荐
猜你喜欢