当前位置: 首页 > news >正文

Node学习5-events模块

异步事件驱动架构

 

//这个变量名是 EventEmitter
 //注意是eventsssssssssss,不是event
 const EventEmitter = require('events');

 //ES6
 //继承EventEmitter
 class CustomEvent extends EventEmitter{

 };

 const ce = new CustomEvent();


 //绑定监听函数
 //函数名是test,内容是箭头函数
 ce.on('test',()=>{
     console.log('Hello World');
 });

 //定时器
 //定时触发事件
 setInterval(()=>{
     ce.emit('test');
 },1000);

 

 

移除相关的监听器

const ev = require('events');

//箭头函数是匿名函数
//要创建正式的函数必须这样
function fn1(){
    console.log('fn1');
}

function fn2(){
    console.log('fn2');
}

//看来变量名取ev也是可以的
class CustomEvent extends ev{};

const ce = new CustomEvent();

//一个test事件,可以绑定多个函数
ce.on('test',fn1);
ce.on('test',fn2);

//一般在函数作为参数的时候,才使用匿名函数
setInterval(()=>{
    ce.emit('test');
},500);


//设定在多少秒时候移除函数
setTimeout(()=>{
    ce.removeListener('test',fn2);
},1500);

 

 

处理错误函数

const ev = require('events');

class CustomEvent extends ev{};

const ce = new CustomEvent();


//绑定error事件
//我觉得这种匿名函数就很强,参数类型都不需要
ce.on('error',err=>{
    console.log(err);
});

setTimeout(()=>{
    ce.emit('error',new Error('oop!'));
},1000);

 

如果监听函数只使用一次,可以把on改成once

 

转载于:https://www.cnblogs.com/weizhibin1996/p/9289155.html

相关文章:

  • javascript中 visibility和display的区别
  • npm ERR! Unexpected end of JSON input while parsing near '...inimist:^1.2.0}
  • mysql show命令集合
  • 单例模式的N种写法(Java版)
  • 基于dba_hist_sqlstat查看sql语句的性能历史
  • es6
  • win32之全屏窗口
  • 【ocp新题库】052最新考题收集整理-第7题
  • 蓝桥杯-基础练习12 十六进制转八进制
  • 8 quick ways to clear up drive space in Windows 10
  • 【原创】Hacker学习发展流程图 V1.0
  • 设计模式(八)_门面模式
  • centos 中文乱码解决办法
  • Confluence 6 WebDAV 禁用严格路径检查
  • 并查集——向量偏移
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android组件 - 收藏集 - 掘金
  • Angular2开发踩坑系列-生产环境编译
  • Create React App 使用
  • Effective Java 笔记(一)
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Go 语言编译器的 //go: 详解
  • JAVA SE 6 GC调优笔记
  • JavaScript函数式编程(一)
  • laravel with 查询列表限制条数
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从重复到重用
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 驱动程序原理
  • 什么软件可以剪辑音乐?
  • 使用Gradle第一次构建Java程序
  • 使用putty远程连接linux
  • 项目实战-Api的解决方案
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 责任链模式的两种实现
  • python最赚钱的4个方向,你最心动的是哪个?
  • 阿里云服务器购买完整流程
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #Linux(make工具和makefile文件以及makefile语法)
  • #Z0458. 树的中心2
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (9)目标检测_SSD的原理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)jdk与jre的区别
  • (转载)虚函数剖析
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .net 4.0发布后不能正常显示图片问题