zoukankan      html  css  js  c++  java
  • node.js绑定监听事件EventEmitter类

    Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下:

    // 引入 events 模块
    var events = require('events');
    // 创建 eventEmitter 对象
    var eventEmitter = new events.EventEmitter();
    
    
    //或者如下
    var EventEmitter = require('events').EventEmitter; 
    var event = new EventEmitter(); 

    绑定事件处理程序:.on

    // 绑定事件及事件的处理程序
    eventEmitter.on('eventName', eventHandler);

    触发事件:.emit

    // 触发事件
    eventEmitter.emit('eventName');

    .once
    为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器,也就是说不管某个事件在将来被触发多少次,都只调用一次回调函数。

    a.once('某个事件', function () {
      //尽管事件会触发多次,但此方法只会执行一次
    });

    具体实例如下,创建main.js文件,代码为:

    // 引入 events 模块
    var events = require('events');
    // 创建 eventEmitter 对象
    var eventEmitter = new events.EventEmitter();
    
    // 创建事件处理程序
    var connectHandler = function connected() {
       console.log('连接成功。');
       // 触发 data_received 事件 
       eventEmitter.emit('data_received');
    }
    
    // 绑定 connection 事件处理程序
    eventEmitter.on('connection', connectHandler);
     
    // 使用匿名函数绑定 data_received 事件
    eventEmitter.on('data_received', function(){
       console.log('数据接收成功。');
    });
    
    // 触发 connection 事件 
    eventEmitter.emit('connection');
    console.log("程序执行完毕。");
    
    //运行结果:
        //连接成功。
        //数据接收成功。
        //程序执行完毕。

     EventEmitter 的每个事件由一个事件名和若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持 若干个事件监听器。当事件触发时,注册到这个事件的事件监听器被依次调用,事件参数作为回调函数参数传递。

    //event.js 文件
    var events = require('events'); 
    var emitter = new events.EventEmitter(); 
    emitter.on('someEvent', function(arg1, arg2) { 
        console.log('listener1', arg1, arg2); 
    }); 
    emitter.on('someEvent', function(arg1, arg2) { 
        console.log('listener2', arg1, arg2); 
    }); 
    emitter.emit('someEvent', 'arg1 参数', 'arg2 参数'); 
    
    //运行结果:
        //listener1 arg1 参数 arg2 参数
        //listener2 arg1 参数 arg2 参数

    error事件

    EventEmitter 定义了一个特殊的事件 error,它包含了错误的语义,我们在遇到 异常的时候通常会触发 error 事件。当 error 被触发时,EventEmitter 规定如果没有响 应的监听器,Node.js 会把它当作异常,退出程序并输出错误信息。

    我们一般要为会触发 error 事件的对象设置监听器,避免遇到错误后整个程序崩溃。例如:

    var events = require('events'); 
    var emitter = new events.EventEmitter(); 
    emitter.emit('error');
    
    //运行结果会显示出错误信息
  • 相关阅读:
    vmware ubuntu 异常关机无法连接到网络
    Speed up GCC link
    常用的一些解压命令
    Log4j 漏洞复现
    Test Case Design method Boundary value analysis and Equivalence partitioning
    CCA (Citrix Certified Administrator) exam of “Implementing Citrix XenDesktop 4”
    What is Key Word driven Testing?
    SAP AGS面试小结
    腾讯2013终端实习生一面
    指针的引用
  • 原文地址:https://www.cnblogs.com/lmjZone/p/8557513.html
Copyright © 2011-2022 走看看