理解發(fā)布/訂閱

理解發(fā)布/訂閱

異步編程方法

1.回調(diào)函數(shù)
2.事件發(fā)布/訂閱
3.Promise
4.generator函數(shù)
5.async函數(shù)

//回調(diào)地獄
function ajax(url, callback){
 //實(shí)現(xiàn)省略
}

ajax('./test1.json',function(data){
 console.log(data);
 ajax('./test2.json',function(data){
   console.log(data);
   ajax('./test3.json',function(data){
     console.log(data);
   });
 });

//發(fā)布/訂閱
const pbb = new PubSub();
ajax("./test1.json",function(data){
 pbb.publish("test1Success",data);
});
pbb.subscribe("test1Success",function(data){
 console.log(data);
 ajax("./test2.json",function(data){
   pbb.publish("test2Success",data);
 });
});
pbb.subscribe("test2Success",function(data){
 console.log(data);
 ajax("./test3.json",function(data){
   pbb.publish("test3Success",data);
 });
});
pbb.subscribe("test2Success",function(data){
 console.log(data);
});

實(shí)現(xiàn)發(fā)布/訂閱

class PubSub{
  constructor(){
    this.events = {};
  }
  publish(eventName,data){
    if(this.events[eventsName]){
      this.events[eventName].forEach(cb => {
        cb.apply(this.data)
      });
    }
  }

  subscribe(eventName, callback){
    if(this.events[eventName]){
      this.events[eventName].push(callback);
    }else{
      this.events[eventName] = [callback];
    }
  }

  unSubcribe(eventName,callback){
    if(this.events[eventName]){
      this.events[eventName] = this.events[eventName].filter(
        cb => cb !== callback
      );
    }
  }
}

Node.js的發(fā)布/訂閱

});

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 訂閱報(bào)紙 交錢, 登記地址, 訂閱哪一種報(bào)紙 郵遞員 送報(bào)紙 訂閱消息 (訂閱/約定 -> 發(fā)布) 消息名 (相...
    A_dfa4閱讀 224評(píng)論 0 0
  • 發(fā)布訂閱模式是多對(duì)多情況 大家應(yīng)該都有去過(guò)書(shū)店買書(shū)或者報(bào)紙,這里用小伙伴去書(shū)店買報(bào)紙為例。 如圖所示,報(bào)紙會(huì)放到書(shū)...
    於我閱讀 1,009評(píng)論 0 2
  • 理解發(fā)布/訂閱 我們先來(lái)看一段用來(lái)模擬異步請(qǐng)求嵌套的代碼 以上三次異步請(qǐng)求中: 內(nèi)層依賴于外層,高耦合 不符合閱讀...
    夏末遠(yuǎn)歌閱讀 571評(píng)論 0 0
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進(jìn)階之旅閱讀 115,508評(píng)論 24 450
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過(guò)就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,397評(píng)論 2 7

友情鏈接更多精彩內(nèi)容