NodeJS入门:常用模块汇总之事件模块

Posted 安之ccy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJS入门:常用模块汇总之事件模块相关的知识,希望对你有一定的参考价值。


关于事件模块,这里有一篇好文;
官网在此:here




事件模块中,使用on注册事件,使用emit触发事件,二者构成了最简单的事件模块的demo:

// 引入模块
const EventEmitter = require("events");

// 创建MyEventEmitter类
class MyEventEmitter extends EventEmitter { }

// 实例化对象
const myEventEmitter = new MyEventEmitter();

// 注册事件,事件名为event
myEventEmitter.on('event', (msg) => {
    console.log(msg);
})

// 触发event事件,并传入参数
myEventEmitter.emit("event","实现事件并将此参数传递到回调函数中");

console.log(1);

执行效果:
先输出"实现事件并将此参数传递到回调函数中",再输出1(同步)
 



  • EventEmitter 以注册的顺序同步地调用所有监听器。 这样可以确保事件的正确排序,并有助于避免竞态条件和逻辑错误。
  • 当适当时,监听器函数可以使用 setImmediate() 和 process.nextTick() 方法切换到异步的操作模式

如果我们使用异步事件:

// 注册事件,事件名为event
myEventEmitter.on('event', (msg) => {
    setImmediate(() => {
        console.log(msg);
      });
    // console.log(msg);
})

效果:先输出1,再输出"实现事件并将此参数传递到回调函数中"

以上是关于NodeJS入门:常用模块汇总之事件模块的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS入门:常用模块汇总之http模块

NodeJS入门:常用模块汇总之http模块

NodeJS入门:常用模块汇总之(path / fs / os / url模块)

NodeJS入门:常用模块汇总之(path / fs / os / url模块)

nodejs入门API之net模块

nodejs入门教程之http的get和request简介及应用