6.NodeJs事件模块

作者: coderLfy | 来源:发表于2017-01-10 15:19 被阅读25次

常用事件模块


由于本人也是才开始学习Node,所以这里只简单的讲点Scott老师来视频中讲解的事件,后续在进行总结!

官网Api

首先导入events模块

var EventEmitter = require('events').EventEmitter;
var life = New EventEmitter();

解释一下:

Node.js核心API的大部分是围绕一个惯用的异步事件驱动架构构建的,其中某些类型的对象(称为“发射器”)周期性地发出命名事件,使得调用Function对象(“侦听器”)。

添加一个事件(addListener)括号中的也可以使用

on(eventName,listener)

  • 参数一:事件的名称或者字符串
  • 参数二:回调函数
  • 官方建议最多添加10事件,可更改最大值:emitter.setMaxListeners(num),多了容易内存泄漏
life.on('EV', function(a) {
  console.log(a);//参数,由emit传递
});

创建事件是一个发射器,接受器 emit

emitter.emit(eventName,[...args])
返回值为boolean

  • true:有监听器
  • false:无
var isTure = life.emit('EV','参数')//返回一个true
//第二个参数会传递到on里的回调函数中去

说到发出事件,接收事件,怎么删除呢? Scott老师在视频中也讲到了一个坑:不能移除一个匿名函数

移除事件的时候只能移除具名函数

移除某个事件:
left.removeListener(eventName,listener)

//Scott老师为了便于大家理解,写的伪代码
function water(who){
    console.log('给'+ who + '倒水')!
}
life.on('求安慰',water);
life.removeListener('求安慰',water);//解除成功

移除全部事件:life.removeAllListeners(EventName)

  • 不传参数全部删除
  • 带参数:删除为参数名的事件

获某个事件的集合:life.listeners(eventName)
可以加length获得总数

EventEmitter.listenerCount(eventName);4.0已被弃用
官方推荐使用emitter.listenerCount(eventName)返回事件的数目

相关文章

  • 6.NodeJs事件模块

    常用事件模块 由于本人也是才开始学习Node,所以这里只简单的讲点Scott老师来视频中讲解的事件,后续在进行总结...

  • 2018-08-20第五天课

    内置模块 => 直接使用 Node 提供好的核心模块 Event 事件模块事件模块是整个 Node.js ...

  • Nginx核心模块以及指令介绍

    Nginx模块概览 Nginx核心模块以及指令介绍 注意:Nginx的核心模块包含主模块和事件模块,即上图的cor...

  • nodejs——事件发射器

    Nodejs是基于V8引擎实现的事件驱动IO。事件模块Events是Nodejs的核心模块之一,许多模块都继承自E...

  • 手写node事件模块原理

    node事件模块使用方法

  • 事件管理模块

    从零开始编写一个PHP框架 系列的《事件管理模块》项目地址:terse 前言 事件管理器在框架中早已屡见不鲜,也有...

  • Node.js 的 events 模块

    Node.js 没有浏览器的事件冒泡、事件捕获机制。 events 模块是 Node.js 基础及重要的模块, 只...

  • React-Native 主动发事件给JS

    发送事件类 暴露native模块 JS使用

  • 第三方SDK 动态配置解决方案

    一、说明 从2019年3月份接手游戏SDK任务以来,我们完善了 登录模块、支付模块、事件 统计模块、分享模块 等功...

  • dom事件代理

    实现一个js事件代理的模块,帮助用户快速实现事件代理。

网友评论

    本文标题:6.NodeJs事件模块

    本文链接:https://www.haomeiwen.com/subject/kcjkbttx.html