【Node.js】事件触发器 - 基础篇

7275569-09ec406a553cb46d.jpg
微信订阅号:Rabbit_svip



node想要触发一个事件,可不像前端开发那样有 onclick 等事件可以触发。



1、引入 events 事件模块

在node中,触发事件前,需要先通 require 引入事件模块

var events = require('events');

这样就把事件模块引入,并赋给变量 events 了。



2、创建EventEmitter对象

var myEmitter = new events.EventEmitter();

通过new关键字,创建EventEmitter对象,并赋给变量 myEmitter



3、注册事件

myEmitter.on('rabbit', function(msg="I\'m Rabbit") {
  console.log(msg);
});

通过 on 关键字,注册一个名叫“rabbit”的事件,该事件接受一个参数。这里用了ES6的写法,如果没参数传过来,msg的值就是“ I'm Rabbit ”。



4、触发事件

myEmitter.emit('rabbit');
myEmitter.emit('rabbit', "Hello Rabbit~");

通过 emit 关键字,触发已写好的事件。

输出结果


7275569-b8c63a7d22a1234d.png
微信订阅号:Rabbit_svip

可以看到Terminal输出两行。
第一行没传參,所以输出默认值。
第二行传參,所以输出参数值。




上面的代码是同步执行的。

var events = require('events');
var myEmitter = new events.EventEmitter();

myEmitter.on('rabbit', function(msg="I\'m Rabbit") {
  console.log(msg);
});

myEmitter.emit("Hello Rabbit~");

console.log('hello node!');
7275569-03f272d2adce232c.png
微信订阅号:Rabbit_svip

能清晰看到,“hello node!”这句是最后才执行的。



如果希望这些事件是异步执行的,就是执行rabbit事件的同时也执行其后的代码的话,可以通过setImmediate这个方法。
var events = require('events');
var myEmitter = new events.EventEmitter();

myEmitter.on('rabbit', function(msg="I\'m Rabbit") {
  setImmediate(function() {
    console.log(msg);
  })
});

myEmitter.emit("Hello Rabbit~");

console.log('hello node!');
7275569-b019b24bef42a147.png
微信订阅号:Rabbit_svip

因为执行“rabbit”事件是需要一点时间的(虽然这时间对于人来说可以忽略不计),但执行最后的console.log会更快,所以这里的输出顺序会有所变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值