1、發布/訂閱模式也是諸多設計模式當中的一種;
2、這種方式可以在es5下相當優雅地處理非同步操作;
3、什麼是發布/訂閱呢?我們舉個栗子:
假設fn1,fn2,fn3都可以視作乙個事件的發布者,執行它,就會發布乙個事件。這個時候,我們可以通過乙個事件的訂閱者去批量訂閱並處理這些事件,包括它們的先後順序。增加乙個訊息訂閱者的方法:
class asyncfunarr
next ()
run ()
}
4、呼叫
//首先將fn1,fn2,fn3訂閱
const asyncfunarr = new asyncfunarr(fn1, fn2, fn3)
//fn1,fn2,fn3作為分布者分別呼叫其next()方法:
function fn1 ()
function fn2 () , 500)
}function fn3 ()
5、輸出:
// function 1
// function 2
// function 3
6、總結:
通過上述方法,可以實現很多,如非同步請求資料等。
redis發布訂閱c介面 Redis發布訂閱
適用場景 直播訊息 彈幕訊息 粉絲訂閱訊息推送 知識點1 關鍵字 publish subscribe psubscribe redis採用publish命令傳送訊息,其返回值為接收到該訊息的訂閱者的數量。redis採用subscribe命令訂閱某個頻道,其返回值包括客戶端訂閱的頻道,目前已訂閱的頻道...
javascript事件總結
onabort 影象載入被中斷 onblur 失去焦點 onclick 滑鼠單擊某個物件 onchange 使用者改變內容 ondbclick 滑鼠雙擊某個物件 onerror 當載入文件或物件時發生某個錯誤 onfocus 獲得焦點 onkeydown 鍵盤的鍵被按下 onkeypress 鍵盤的...
JavaScript事件委託
js事件處理程式 首先,為什麼要用事件委託,用一段 解釋下 如上面 如果要新增事件處理程式,我們一般做法是,給list1 list2 list3這個3個li元素分別新增事件處理程式,但是有沒有想過,如果元素很多呢,我們還是一直用這樣的方法新增嗎?當然是不可能的,這樣子,非累死程式設計師不可 這個時候...