理解发布/订阅

理解发布/订阅

异步编程方法

1.回调函数
2.事件发布/订阅
3.Promise
4.generator函数
5.async函数

//回调地狱
function ajax(url, callback){
 //实现省略
}

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

//发布/订阅
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);
});

实现发布/订阅

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的发布/订阅

});

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 订阅报纸 交钱, 登记地址, 订阅哪一种报纸 邮递员 送报纸 订阅消息 (订阅/约定 -> 发布) 消息名 (相...
    A_dfa4阅读 1,504评论 0 0
  • 发布订阅模式是多对多情况 大家应该都有去过书店买书或者报纸,这里用小伙伴去书店买报纸为例。 如图所示,报纸会放到书...
    於我阅读 4,457评论 0 2
  • 理解发布/订阅 我们先来看一段用来模拟异步请求嵌套的代码 以上三次异步请求中: 内层依赖于外层,高耦合 不符合阅读...
    夏末远歌阅读 3,465评论 0 0
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 115,346评论 24 450
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 127,871评论 2 7

友情链接更多精彩内容