透露订阅情势的实例,Javascript设计情势之阅览者格局

//导入内置模块
let EventEmitter = require('events');
let util=require('util');
//Man继承EventEmitter
util.inherits(Man,EventEmitter); 
//创建一个函数
function Man(){}
//实例化函数
let man=new Man();

function findGirl() {
  console.log('找新的女朋友')
}
function saveMoney() {
  console.log('省钱')
}
man.on('失恋',findGirl)//失恋 ,绑定一个函数方法
man.on('失恋',saveMoney)//失恋 ,绑定一个函数方法
man.removeListener('失恋',findGirl); //移除省钱
man.emit('失恋');

皇家娱乐网址,废话非常少说,直接上代码

写到这里观看者格局达成了,可是恐怕会有多少个山村需要这种模式,那大家这里将observer改动成构造函数的章程

如上那篇node.js
发表订阅形式的实例正是作者分享给大家的全体内容了,希望能给大家多少个参阅,也可望大家多多援助脚本之家。

上述那篇js
公布订阅格局的实例疏解正是我分享给我们的全体内容了,希望能给大家贰个参照,也期待我们多多辅助脚本之家。

观望者情势一时也称之为发表–订阅方式,在观察者形式中,有多个旁观者能够管理全数的靶子,等到有状态发生退换的时候发出通报。(其实sql
server中的发布订阅也是其一道理)

您大概感兴趣的稿子:

  • JavaScript中发布/订阅格局的简短实例
  • js 公布订阅方式的实例讲授
  • JavaScript设计情势之观望者形式(公布订阅情势)原理与贯彻格局言传身教
  • JavaScript阅览者形式(杰出)
  • JavaScript观察者方式(publish/subscribe)原理与完毕格局
  • JavaScript设计方式之观看者方式(发表者-订阅者方式)
  • 深深领会Javascript中的观看者格局
  • Javascript设计格局之观看者格局(推荐)
  • JavaScript原生完成阅览者格局的示范
  • JavaScript编制程序设计格局之观看者情势(Observer
    Pattern)实例详解
  • JavaScript事件发布/订阅情势原理与用法分析

您大概感兴趣的稿子:

  • JavaScript中公告/订阅情势的简短实例
  • node.js
    公布订阅情势的实例
  • JavaScript设计形式之观察者形式(发表订阅方式)原理与完毕格局言传身教
  • JavaScript旁观者形式(特出)
  • JavaScript观看者方式(publish/subscribe)原理与落到实处况势
  • JavaScript设计方式之观望者形式(发表者-订阅者方式)
  • 深切理解Javascript中的旁观者形式
  • Javascript设计方式之阅览者方式(推荐)
  • JavaScript原生完结观看者格局的亲自去做
  • JavaScript编制程序设计情势之阅览者情势(Observer
    Pattern)实例详解
  • JavaScript事件发布/订阅格局原理与用法剖析

你恐怕感兴趣的篇章:

  • JavaScript中公告/订阅形式的简约实例
  • js 公布订阅格局的实例讲授
  • node.js
    公布订阅形式的实例
  • JavaScript设计形式之观看者形式(公布订阅格局)原理与贯彻形式言传身教
  • JavaScript旁观者情势(特出)
  • JavaScript观看者方式(publish/subscribe)原理与实现方式
  • JavaScript设计情势之观看者方式(公布者-订阅者形式)
  • 深深通晓Javascript中的观看者形式
  • JavaScript原生达成观看者格局的言传身教
  • JavaScript编制程序设计格局之阅览者方式(Observer
    Pattern)实例详解
  • JavaScript事件揭露/订阅格局原理与用法解析

实举个例子下:

//发布订阅模式
class EventEmiter{
  constructor(){
    //维护一个对象
    this._events={

    }
  }
  on(eventName,callback){
    if( this._events[eventName]){
      //如果有就放一个新的
      this._events[eventName].push(callback);
    }else{
      //如果没有就创建一个数组
      this._events[eventName]=[callback]
    }
  }
  emit(eventName,...rest){
    if(this._events[eventName]){ //循环一次执行
      this._events[eventName].forEach((item)=>{
        item.apply(this,rest)
      });
    }
  }
  removeListener(eventName,callback){
    if(this._events[eventName]){
      //当前数组和传递过来的callback相等则移除掉
      this._events[eventName]=
        this._events[eventName].filter(item=>item!==callback);
    }
  }
  once(eventName,callback){
    function one(){
      //在one函数运行原来的函数,只有将one清空
      callback.apply(this,arguments);
      //先绑定 执行后再删除
      this.removeListener(eventName,one);
    }
    this.on(eventName,one);
      //此时emit触发会执行此函数,会给这个函数传递rest参数
  }
}
class Man extends EventEmiter{}
let man=new Man()
function findGirl() {
  console.log('找新的女朋友')
}
function saveMoney() {
  console.log('省钱')
}
man.once('失恋',findGirl);
//man.on('失恋',findGirl) //失恋 ,绑定一个函数方法
man.on('失恋',saveMoney)//失恋 ,绑定一个函数方法
man.removeListener('失恋',saveMoney); //移除一个函数方法
man.emit('失恋');
//绑定一次,触发多次,也只执行一次。触发后一次将数组中的哪一项删除掉下次触发就不会执行

1.什么样是观看者方式

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图