zoukankan      html  css  js  c++  java
  • 11.事件驱动events

    事件驱动events ==> events.EventEmitter, EventEmitter 的核心就是事件发射与事件监听器功能的封装
    更详细的 API 文档参见 http://nodejs.org/api/events.html。

    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", "byvoid", 1991);
    
    // 运行的结果是: 
    // listener1 byvoid 1991 
    // listener2 byvoid 1991
    // emitter  为事件  someEvent 注册了两个事件监听器,然后发射了 someEvent事件。运行结果中可以看到两个事件监听器回调函数被先后调用
    

    1.EventEmitter.on(event, listener) ==> 为指定事件注册一个监听器, 接受一个字符串event和一个回调函数listener
    2.EventEmitter.emit(event, [arg1], [arg2], [...]) ==> 发射 event 事件,传递若干可选参数到事件监听器的参数表。
    3.EventEmitter.once(event, listener) ==> 单次监听器, 只触发一次
    4.EventEmitter.removeListener(event, listener) 移除指定事件的某个监听器,listener必须是该事件已经注册过的监听器。
    5.EventEmitter.removeAllListeners([event]) ==> 移除所有事件的所有监听器,如果指定 event ,则移除指定事件的所有监听器。
    6.error事件 ==> 我们一般要为会发射error事件的对象设置监听器,避免遇到错误后整个程序崩溃。

    var  events = require('events'); 
    var  emitter =  new  events.EventEmitter(); 
    emitter.emit('error'); 
    运行时会显示以下错误: 
    node.js:201 
    throw e; // process.nextTick error, or 'error' event on first tick 
    

    7.继承EventEmitter
    大多数时候我们不会直接使用EventEmitter, 而是在对象中继承它, 包括fs, net, http在内, 只要是支持事件响应的核心模块都是EventEmitter的子类

  • 相关阅读:
    【BZOJ1076】[SCOI2008]奖励关 状压DP+期望
    【TYVJ1864】[Poetize I]守卫者的挑战 概率与期望
    【BZOJ1426】收集邮票 期望
    设置SAPgui自动退出功能
    SAP系统联机应用程序帮助
    c++ 类型安全
    生成与重新生成的区别
    2014-02-20
    新公司工作
    落后了
  • 原文地址:https://www.cnblogs.com/alantao/p/7966173.html
Copyright © 2011-2022 走看看