zoukankan      html  css  js  c++  java
  • nodeJs事件之监听移除事件

    var EventEmitter=require('events').EventEmitter
    var life=new EventEmitter();
    //comfort  求安慰,函数名;
    //fondness 求溺爱,函数名; 
    //官方建议,事件监听的最大数量不要超过10个,太多的话可能会导致内存的泄漏,当然这个值是可以修改的,通过setMaxListeners()方法修改;
    life.setMaxListeners(3)
    life.on('comfort',function(who){//监听,求安慰,
        console.log('给'+who+'倒水!');
    })
    life.on('comfort',function(who){//监听,求安慰,
        console.log('给'+who+'揉肩');
    })
    life.on('comfort',zuofan); 
    function zuofan(who){
        console.log('给'+who+'做饭');
    }
    life.on('fondness',maiyifu); 
    life.on('fondness',jiaogongzi); 
    function maiyifu(who){
        console.log('给'+who+'买衣服');
    }
    function jiaogongzi(who){
        console.log('给'+who+'交工资');
    }
    //life.removeListener('comfort',zuofan); //移除事件; 
    life.emit('comfort','老公')//调用事件
    life.emit('fondness','老婆')//调用事件
    //console.log(life.emit('comfort','老公'))//是否调用事件,返回true,false;
    console.log('给老公做的事情:'+life.listeners('comfort').length)//事件的个数;
    console.log('给老婆做的事情:'+life.listeners('fondness').length)//事件的个数;

    打开CMD,运行node events.js,如下图所示:

    首先监听事件,然后用emit()方法来调用,移除事件为removeListener()方法;

    需要注意的是,监听事件可以传入匿名函数也可以传入实名函数,但是移除事件的时候,必须传入实名函数,传入匿名函数会有错误;

  • 相关阅读:
    Codeforces467C George and Job
    Codeforces205E Little Elephant and Furik and RubikLittle Elephant and Furik and Rubik
    Codeforce205C Little Elephant and Interval
    51nod1829 函数
    51nod1574 排列转换
    nowcoder35B 小AA的数列
    Codeforce893E Counting Arrays
    gym101612 Consonant Fencity
    CodeForces559C Gerald and Giant Chess
    CodeForces456D A Lot of Games
  • 原文地址:https://www.cnblogs.com/jone-chen/p/5051703.html
Copyright © 2011-2022 走看看