mysql触发器 node_node.js中事件触发器events的使用

node.js是基于事件驱动的,通过events,我们可以方便的创建事件,并通过触发事件来调用我们自定义的监听函数。

所有能触发事件的对象都应该是 EventEmitter 类的实例,一般我们自定义一个类继承于 EventEmitter 类。

通过on()方法我们可以绑定事件与监听函数:

const Events = require('events');

//自定义一个类,继承于EventEmitter类

class MyEvent extends Events {

}

//实例化一个我们自定义的事件类

let e = new MyEvent();

//通过on来绑定事件与监听函数

e.on('click', function () {

console.log('点击了');

});

//通过emit触发事件

e.emit('click');

emit()方法可以传递多个参数给监听函数使用:

const Events = require('events');

//自定义一个类,继承于EventEmitter类

class MyEvent extends Events {

}

//实例化一个我们自定义的事件类

let e = new MyEvent();

//通过on来绑定事件与监听函数

e.on('click', function (...args) {

args.forEach(function (value) {

console.log(value);

});

});

//通过emit触发事件

e.emit('click', 1, 2, 3);

addListener()方法是on()方法的别名,具体的使用,可以看on()方法。

once() 方法添加单次执行的事件与监听函数,只会执行一次。

const Events = require('events');

//自定义一个类,继承于EventEmitter类

class MyEvent extends Events {

}

//实例化一个我们自定义的事件类

let e = new MyEvent();

e.once('click', function () {

console.log('点击');

});

//多次触发事件,只会执行一次

e.emit('click');

e.emit('click');

e.emit('click');

我们也可以通过 removeListener() 方法删除指定的监听处理函数,还有一个同名函数 off(),用法一样。

const Events = require('events');

//自定义一个类,继承于EventEmitter类

class MyEvent extends Events {

}

//实例化一个我们自定义的事件类

let e = new MyEvent();

function click() {

console.log('点击');

}

function move() {

console.log('移动');

}

e.on('事件', click);

e.on('事件', move);

//触发事件

e.emit('事件');

//我们删除其中一个绑定事件

e.off('事件', click);

//再次触发事件后,被删除的绑定事件就无法执行了。

e.emit('事件');

当我们为某个事件绑定过多监听函数时,就会打印警告,默认是 10 个,我们可以使用 setMaxListeners() 来设置最大监听数量

const Events = require('events');

//自定义一个类,继承于EventEmitter类

class MyEvent extends Events {

}

//实例化一个我们自定义的事件类

let e = new MyEvent();

function click() {

console.log('点击');

}

//如果设置0,则表示不受限制

e.setMaxListeners(0);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.on('事件', click);

e.emit('事件');

通过 listeners() 函数可以返回指定事件的所有监听函数

const Events = require('events');

//自定义一个类,继承于EventEmitter类

class MyEvent extends Events {

}

//实例化一个我们自定义的事件类

let e = new MyEvent();

function click() {

console.log('点击');

}

function move() {

console.log('移动');

}

e.on('事件', click);

e.on('事件', move);

//获取该事件的所有监听函数

let arr = e.listeners('事件');

//循环调用

arr.forEach(function (fn) {

fn();

});

通过 eventNames() 获取所有事件名数组

const Events = require('events');

//自定义一个类,继承于EventEmitter类

class MyEvent extends Events {

}

//实例化一个我们自定义的事件类

let e = new MyEvent();

function click() {

console.log('点击');

}

function move() {

console.log('移动');

}

e.on('点击', click);

e.on('移动', move);

//获取所有事件名数组

console.log(e.eventNames());

事件对象的 'newListener' 和 'removeListener' 事件

事件对象添加新的监听器之前,会触发自身的 'newListener' 事件。

事件对象删除监听器后触发 'removeListener' 事件。

const Events = require('events');

class MyEvent extends Events {

}

let e = new MyEvent();

//注意 'newListener' 事件是在添加监听器之前触发的

e.once('newListener', function (eventName, listener) {

console.log(eventName, '事件被添加');

//所以这里的事件回调会先执行

e.on('click', function () {

console.log('我比点击了,先显示');

});

});

//注意 'removeListener' 事件是在监听器移除后触发

e.on('removeListener', function (eventName, listener) {

console.log(eventName, '事件被删除');

});

//绑定click事件

e.on('click', function () {

console.log('点击了');

});

//触发click事件

e.emit('click');

//移除事件

e.removeAllListeners('click');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之UI线程与子线程交互设计的5种方法

转载地址:http://www.cr173.com/html/19165_1.html 在android的设计思想中,为了确保用户顺滑的操作体验。一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务。因此我们必须要重新开启一个后台线程运行这些任务。然而,往往这些任务最终又会直接或者间接的需要访…

svn: Can't open file '/a/b/db/txn-current-lock': Permission denied

SVN新建完版本库,在提交的时候报出如下错误 svn: Cant open file /a/b/db/txn-current-lock: Permission denied Permission denied svn: Cant make directory /a/b/dav/activities.d: Permission denied Permission denied 解决方法: chmod -R 755 /a/b…

常用的加密算法---数字摘要

数字摘要:数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它是一个单向Hash函数对消息进行计算产生的。摘要生成的过程:待摘要串-----> Hash函数-----> 摘要消息摘要的特点:1.无论输入的…

清华最强本科生Top10出炉,从来没有什么天才学霸!

全世界只有3.14 % 的人关注了爆炸吧知识‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍本文转自:量子位作者:木易 鱼羊一年一度,清华园里的“神仙打架”,投票结果已经出炉。根据清华大学官方消息,2020年清华大学特等奖学金&#x…

day19(中)_IO流3(模拟缓冲区,装饰设计模式)

1.MyBufferedReader和MyBufferedInputStream 1.模拟字符读取流的缓冲区: /*根据readLine原理:自定义一个类包含一个功能和readLine一致的方法来模拟以下BufferedReader方法 */ package myreadline; import java.io.FileReader; import java.io.IOException;class MyBufferedRea…

手把手教你学Dapr - 8. 绑定

介绍使用绑定,您可以使用来自外部系统的事件触发您的应用程序,或与外部系统交互。这个构建块为您和您的代码提供了几个好处:消除连接和轮询消息系统(如队列和消息总线)的复杂性关注业务逻辑,而不是如何与系…

python win7 sp1_[ Python - 15 ] win7安装paramiko问题总汇

安装环境:win7 sp1 python3.5 安装paramiko新装的win7 sp1 x64位系统,安装好python3.5和pycharm后,需要用到paramiko模块于是开始安装:>>pip install paramiko报错:warning: GMP or MPIR library not found; Not…

Android之百度地图定位最详细使用总结

Android之百度定位 如果项目里面有定位功能的话,一般还是觉得蛮高大上的,我们项目用的百度定位,到网上找了很多资料,很多都不全面,很多博客都没有小伙伴期望得到当前的省和城市出来,然后自己动手也有很多错误,不知道错在哪里,也在网上找为什么…

CountDownLatch应用实战

2019独角兽企业重金招聘Python工程师标准>>> 1. CountDownLatch简介 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。其本质就是一个共享锁。 他最主要的作用是用来同步java的线程。 主要有以下三个方…

用JoyToKey使游戏手柄变键盘或鼠标

用JoyToKey使游戏手柄变键盘或鼠标 除了用手柄来玩游戏外,你有没有想过利用手柄做点别的什么事情呢?其实,只要结合一个非常小巧的游戏控制器增强软件JoyToKey,我们就能最大限度地挖掘手柄的潜力,用它来完成在以前看来“…

40张令人震惊的对比图,第一张细思恐极

全世界只有3.14 % 的人关注了爆炸吧知识世界之大,无奇不有。来看Reddit网友们分享的一组对比图,涨涨姿势!医生对戴口罩和不戴口罩的培养皿分别:打喷嚏,唱歌,说话和咳嗽之后的区别(难怪有些国家疫…

mysql查找最高分最低分_sql查询最高分、最低分和平均分语句

sql 查询最高分、最低分和平均分语句//我们要用就以学生成绩为实例吧/*结构学生表Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号*/查询各科成绩最高分、最…

Smark.Data 1.5更新详解

由于一直忙于Beetle的开发和优化,Smark.Data组件已经有很长一段时间更新。这段时间发现Smark.Data在某些情况下不足,而这些情况又比较普遍所以进行了1.5版的更新。其更新的主要功能包括:查询可填充到自定义对象中,可直接执行存储过程和执行存…

Sql 存储过程加游标结合的使用

创建一个存储过程使用游标 如果该职工入职时间超过3年 并且学历 在本科以上 则对该职工工资加10%如果 学历没达到本科的 入职时间在10年以上 同样对该职工工资追加8% 其他的一律不加 CREATE proc jiagongzi as declare name nvarchar(20) declare xueli nvarchar(20) declare…

C# 数据适配器之 DataAdapter 对象

01 DataAdapter 对象概述DataAdapter 对象是一个数据适配器对象,是DataSet 与数据源之间的桥梁。DataAdapter 对像提供了 4 个属性,用于实现与数据源之间的互通。SelectCommand 属性:向数据库发送查询 SQL 语句。 DeleteCommand 属性&#x…

express 4 简单实现自动注册路由功能

为什么80%的码农都做不了架构师?>>> ##实现 在express,模块的lib/router/index.js 的 proto.route 方法定义附件添加代码,实现自动注册路由方法: var fs require("fs"); var Path require("path&quo…

速战速决?你不会是不行吧......

1 真服了!!▼2 同猫不同命......▼3 无锡:??▼4 还是黄金好?▼5 你会不会是不行??▼6 爸爸:那也太惊喜了...▼7 倒是毫无违和感?▼8 皇上您说的对&…

mysql普通标转分区表_MySQL分区表到普通表互转

由于最近总有人抱怨,数据迁移后执行SQL变慢,经过查看原来是分区导致的问题。原分区根据按月设置RANGE分区,看到这图的时候也许有人就会发现问题.......业务查询SQL:从SQL上看 执行计划确实是走了分区,但为什么没有命中…

c++标准库中,含有链表的类list

Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.STL中 end()指向的总是无效值,取值都用迭代器,用法跟指针差不多。assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个…

读懂路由表

教你读懂路由表源码:--------------------------------------------------------------------------------Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.16…