Rumah hujung hadapan web tutorial js JavaScript发布订阅模式用法详解

JavaScript发布订阅模式用法详解

Sep 11, 2017 am 09:44 AM
javascript js penggunaan

下面小编就为大家带来一篇js 发布订阅模式的实例讲解。小编觉得挺不错的,现在就想给大家,也给大家做个参考。一起跟随小编过来看看吧

废话不多说,直接上代码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

//发布订阅模式

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('失恋');

//绑定一次,触发多次,也只执行一次。触发后一次将数组中的哪一项删除掉下次触发就不会执行

Salin selepas log masuk

Atas ialah kandungan terperinci JavaScript发布订阅模式用法详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Apr 03, 2024 am 11:55 AM

Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik

Menganalisis penggunaan dan klasifikasi ulasan JSP Menganalisis penggunaan dan klasifikasi ulasan JSP Feb 01, 2024 am 08:01 AM

Menganalisis penggunaan dan klasifikasi ulasan JSP

Cara menggunakan fungsi keluar dalam bahasa C dengan betul Cara menggunakan fungsi keluar dalam bahasa C dengan betul Feb 18, 2024 pm 03:40 PM

Cara menggunakan fungsi keluar dalam bahasa C dengan betul

Penggunaan fungsi WPSdatedif Penggunaan fungsi WPSdatedif Feb 20, 2024 pm 10:27 PM

Penggunaan fungsi WPSdatedif

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP Jan 05, 2024 pm 06:08 PM

Tutorial JavaScript Mudah: Cara Mendapatkan Kod Status HTTP

Cara menggunakan pintasan Apple Cara menggunakan pintasan Apple Feb 18, 2024 pm 05:22 PM

Cara menggunakan pintasan Apple

Penerangan terperinci dan pengenalan penggunaan fungsi MySQL ISNULL Penerangan terperinci dan pengenalan penggunaan fungsi MySQL ISNULL Mar 01, 2024 pm 05:24 PM

Penerangan terperinci dan pengenalan penggunaan fungsi MySQL ISNULL

Menggunakan kata kunci yang berbeza dalam menghuraikan SQL Menggunakan kata kunci yang berbeza dalam menghuraikan SQL Feb 18, 2024 pm 09:21 PM

Menggunakan kata kunci yang berbeza dalam menghuraikan SQL

See all articles