js发布的订阅模式的作用有哪些

这篇文章将为大家详细讲解有关js发布的订阅模式的作用有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联公司是专业的椒江网站建设公司,椒江接单;提供成都做网站、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行椒江网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

1、发布订阅模式可以广泛应用于异步编程,这是一种取代回调函数的方案。

2、发布订阅模式可以取代对象之间硬编码的通知机制,一个对象不再需要明确调用另一个对象的接口。

实例

// 由于这些成员对于任何发布者对象都是通用的,故将它们作为独立对象的一个部分来实现是很有意义的。那样我们可将其复制到任何对象中,并将任意给定对象变成一个发布者。
// 如下实现一个通用发布者,定义发布者对象……
let publisher = {
  subscribers: {
    any: []
  },
  subscribe: function (fn, type = `any`) {
    if (typeof this.subscribers[type] === `undefined`) {
      this.subscribers[type] = [];
    }
    this.subscribers[type].push(fn);
  },
  unSubscribe: function (fn, type = `any`) {
    let newSubscribers = [];
    this.subscribers[type].forEach((item, i) => {
      if (item !== fn) {
        newSubscribers.push(fn);
      }
    });
    this.subscribers[type] = newSubscribers;
  },
  publish: function (args, type = `any`) {
    this.subscribers[type].forEach((item, i) => {
      item(args);
    });
  }
};
 
// 定义一个函数makePublisher(),它接受一个对象作为参数,通过把上述通用发布者的方法复制到该对象中,从而将其转换为一个发布者
function makePublisher(obj) {
  for (let i in publisher) {
    if (publisher.hasOwnProperty(i) && typeof publisher[i] === `function`) {
      obj[i] = publisher[i];
    }
  }
  obj.subscribers = { any: [] };
}
 
// 实现paper对象
var paper = {
  daily: function () {
    this.publish(`big news today!`);
  },
  monthly: function () {
    this.publish(`interesting analysis`, `monthly`);
  }
};
 
// 将paper构造成一个发布者
makePublisher(paper);
 
// 看看订阅对象joe,该对象有两个方法:
var joe = {
  drinkCoffee: function (paper) {
    console.log(`Just read ` + paper);
  },
  sundayPreNap: function (monthly) {
    console.log(`About to fall asleep reading this ` + monthly);
  }
};
 
// paper注册joe(即joe向paper订阅)
paper.subscribe(joe.drinkCoffee);
paper.subscribe(joe.sundayPreNap, `monthly`);
 
// 即joe为默认“any”事件提供了一个可被调用的方法,而另一个可被调用的方法则用于当“monthly”类型的事件发生时的情况。现在让我们来触发一些事件:
paper.daily();      // Just read big news today
paper.daily();      // Just read big news today
paper.monthly();    // About to fall asleep reading this interesting analysis
paper.monthly();    // About to fall asleep reading this interesting analysis
paper.monthly();    // About to fall asleep reading this interesting analysis

关于js发布的订阅模式的作用有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

分享名称:js发布的订阅模式的作用有哪些
网站地址:https://www.cdcxhl.com/article0/ghopio.html

成都网站建设公司_创新互联,为您提供电子商务服务器托管面包屑导航软件开发网页设计公司品牌网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设