Node.js(二)——events

Node.js两个核心特性

1. 事件驱动
2. 非阻塞I/O
  • 客户端请求建立连接,提交数据等行为,会触发相应的事件。在一个时刻只能处理一个事件回调函数(单线程),处理过程中当有其它事件时,可以转而处理其它事件,然后再回来执行原事件的回调函数。
    在这里插入图片描述

例子:快餐店点餐。你到了柜台前,把你的点餐单给收银员或者给收银员直接点餐,然后等在那直到你要的食物准备好给你。收银员不能接待下一个人,除非你拿到食物离开。而现实中采用的就是事件驱动的方式:只要你把点餐单给收银员,后厨准备你的食物,而同时收银员在进行收款,当你付完钱,会给你一个号码,如果你的食物准备好了,就呼叫你的号码让你去柜台取。关键的一点是,你没有阻塞下一个客户的订餐请求(非阻塞I/O)。你订餐的食物做好的事件会导致某个人做某个动作(某个服务员喊你的订单号码,你听到你的号码被喊到去取食物),在编程领域,我们称这个为回调(callback function)。

events(事件)

  • 与JavaScript中事件相似,不同的是:
    Node.js中所有能触发事件的对象都是EventEmitter类的实例,且需要使用emit去触发
var EventEmitter = require('events').EventEmitter;  //引入内置模块events并创建EventEmitter对象

var event = new EventEmitter();  // 实例化EventEmitter

event.on('test', function() {  // 事件处理函数,参数分别为函数名和处理函数
    console.log('test事件触发'); 
}); 

setInterval(() => {
    event.emit('test');  // 触发事件
}, 1000);

在这里插入图片描述

VS Code插件安利——Code Runner
  • 解决每次运行代码都需要终端敲命令的繁琐。
  • 使用方法:
    • 运行代码:双击文件选择Run Code
    • 停止运行:双击输出面板选择Stop Code Run

error事件

  • EventEmitter中定义的特殊事件,当程序出现错误时触发error事件,可捕获错误信息
var EventEmitter = require('events'); //引入events模块

class CustomEvent extends EventEmitter {} // 使用ES6 extends语法继承EventEmitter对象

var ce = new CustomEvent(); // 实例化

ce.on('error', err => { // 事件处理函数
    console.log(err);
})

ce.emit('error', new Error('Cound not find Zander!')); // 可以传参数,此处new了一个错误

在这里插入图片描述


  • 除此之外,events中还有许多其它方法和类方法。总之,前路漫漫兮!
  • Node.js中的events
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值