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的子类

  • 相关阅读:
    Android Context 上下文 你必须知道的一切
    Delphi:对TNotifyEvent的理解
    vagrant启动报错The following SSH command responded with a no
    virtualbox命令行共享CentOS目录
    一些Linux命令
    PHP实现单例模式
    maven+springMVC+mybatis+easyUI管理用户增删改查
    Project Euler:Problem 77 Prime summations
    spring 获取对象方式
    linux命令之man和info
  • 原文地址:https://www.cnblogs.com/alantao/p/7966173.html
Copyright © 2011-2022 走看看