• Node.js v0.10.31API手冊-事件


    Node.js v0.10.31API手冊-文件夹

    Events(事件)


    Node里面的很多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。

    全部这些产生事件的对象都是events.EventEmitter的实例。 你能够通过require("events")来訪问该模块。

    通常,事件名是驼峰命名 (camel-cased) 的字符串。只是也没有强制的要求,不论什么字符串都是能够使用的。

    为了处理发出的事件。我们将函数 (Function) 关联到对象上。 我们把这些函数称为 监听器 (listeners)。 在监听函数中 this 指向当前监听函数所关联的EventEmitter 对象。

    类: events.EventEmitter

    通过require('events').EventEmitter 获取 EventEmitter 类。

    当 EventEmitter 实例遇到错误,通常的处理方法是产生一个'error' 事件,node 对错误事件做特殊处理。 假设程序没有监听错误事件,程序会依照默认行为在打印出 栈追踪信息 (stack trace) 后退出。

    全部EventEmitter 会在加入 listener 时触发'newListener'事件。删除 listener 时触发 'removeListener' 事件。

    emitter.addListener(event, listener)

    emitter.on(event, listener)

    加入一个 listener 至特定事件的 listener 数组尾部。


    server.on('connection', function (stream) {
      console.log('someone connected!');
    });
    返回 emitter,方便链式调用。


    emitter.once(event, listener)

    加入一个 一次性 listener。这个 listener 仅仅会在下一次事件发生时被触发一次,触发完毕后就被删除。

    server.once('connection', function (stream) {
      console.log('Ah, we have our first user!');
    });
    返回 emitter,方便链式调用。

    emitter.removeListener(event, listener)

    以指定事件从 listener 数组中删除一个 listener 。注意:此操作会改变 listener 数组中在当前 listener 后的listener 的位置下标。

    var callback = function(stream) {
      console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback);
    返回 emitter,方便链式调用。

    emitter.removeAllListeners([event])

    删除全部 listener,或者删除某些事件 (event) 的 listener。


    返回 emitter,方便链式调用。


    emitter.setMaxListeners(n)

    在默认情况下。EventEmitter 会在多于 10 个 listener 监听某个事件的时候出现警告,此限制在寻找内存泄露时很实用。

    显然,也不是全部的 Emitter 事件都要被限制在 10 个 listener 下面,在这样的情况下能够使用这个函数来改变这个限制。设置0为没有限制。

    emitter.listeners(event)

    返回指定事件的 listener 数组。

    erver.on('connection', function (stream) {
      console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection'))); // [ [Function] ]

    emitter.emit(event, [arg1], [arg2], [...])

    使用提供的參数按顺序运行指定事件的 listener。

    若事件有 listeners 则返回 true 否则返回 false 


    类方法: EventEmitter.listenerCount(emitter, event)

    返回指定事件的 listeners 个数。


    事件: 'newListener'

    • event String 事件名
    • listener Function事件处理函数
    在加入 listener 时会发生该事件。 此时无法确定 listener 是否在 emitter.listeners(event)返回的列表中。

    事件: 'removeListener'

    • event String 事件名
    • listener Function 事件处理函数
    在移除 listener 时会发生该事件。 此时无法确定 listener 是否在emitter.listeners(event)返回的列表中。



  • 相关阅读:
    Mariadb/Mysql命令行常用命令
    Apache
    Web网页服务器软件——介绍
    力扣 2021.02.22
    openwrt 广告屏蔽大师 Plus+ 广告屏蔽
    AWX安装
    Command "python setup.py egg_info" failed with error code 1
    《Can you feel my world》--王力宏
    csv文件读入转字典
    每日一题力扣110 平衡二叉树
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5073728.html
Copyright © 2020-2023  润新知