91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js怎么實現的訂閱發布者模式

發布時間:2021-04-19 09:45:45 來源:億速云 閱讀:136 作者:小新 欄目:web開發

這篇文章主要介紹js怎么實現的訂閱發布者模式,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <script>
    var pubsub = (function(){
      var q = {}
        topics = {},
        subUid = -1;
      //發布消息
      q.publish = function(topic, args) {
        //判斷有沒有當前的話題
        if(!topics[topic]) {return;}
        var subs = topics[topic],//當前話題訂閱者數組
          len = subs.length;
        while(len--) {
          subs[len].func(topic, args);
        }
        return this;
      };
      //訂閱事件
      //接收兩個參數 要訂閱的話題,處理程序
      q.subscribe = function(topic, func) {
        //如果當前話題已經有訂閱者,獲取到訂閱者數組
        //一個話題名下的 訂閱者事件可以是多個fn1, fn2, fn3
        topics[topic] = topics[topic] ? topics[topic] : [];
        
        //給每個訂閱者添加唯一的token
        var token = (++subUid).toString();
        topics[topic].push({
          token : token,
          func : func
        });
        return token;
      };
      //取消訂閱
      q.unsubscribe = function(token){
        Object.keys(topics).map( key => {
          topics[key].map((fn, fnIndex) => {
            if(fn.token == token){
              topics[key].splice(fnIndex,1)
            }
          })
        })
      }
      return q;
    })();
    //觸發的事件(訂閱者的處理程序)
    var logmsg1 = function(topics, data) {
      console.log("logging1:" + topics + ":" + data);
    }
 
    var logmsg2 = function(topic, data) {
      
      console.log("logging2:" + topic + ":" + data,'我是訂閱者2');
    }
    //監聽指定的消息'msgName'
    var sub1 = pubsub.subscribe('msgName', logmsg1);
    var sub2 = pubsub.subscribe('msgName', logmsg2);
    //pubsub.unsubscribe(sub1)
    //發布消息'msgName'
    pubsub.publish('msgName', 'hello world');
    //發布無人監聽的消息'msgName1'
    pubsub.publish('anotherMsgName', 'me too!');
  </script>
</body>
</html>

運行結果:

js怎么實現的訂閱發布者模式

以上是“js怎么實現的訂閱發布者模式”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

靖西县| 高尔夫| 肇庆市| 温州市| 循化| 普格县| 磐安县| 南京市| 合阳县| 平度市| 平武县| 东乌| 太谷县| 马龙县| 顺义区| 太仓市| 温州市| 福鼎市| 铜山县| 烟台市| 罗源县| 讷河市| 朝阳区| 天镇县| 石屏县| 乐业县| 武陟县| 盐山县| 镇雄县| 佳木斯市| 深州市| 黄冈市| 临安市| 高碑店市| 凯里市| 哈尔滨市| 乡城县| 土默特右旗| 南江县| 灵武市| 白山市|