Node.js / Node.js Event-Driven Programming

Working with Event Emitters in Node.js

This tutorial will guide you through the process of creating and using Event Emitters in Node.js. You'll learn to create custom events and handle them effectively.

Tutorial 1 of 5 5 resources in this section

Section overview

5 resources

Explores the event-driven architecture and the EventEmitter class in Node.js.

Working with Event Emitters in Node.js

1. Introduction

This tutorial aims to provide a comprehensive understanding of Event Emitters in Node.js and their practical usage. We will be creating custom events and handling them effectively using the EventEmitter class.

By the end of this tutorial, you will be able to:

  • Understand what Event Emitters are and how they work in Node.js
  • Create custom events using the EventEmitter class
  • Handle these events effectively

Prerequisites

  • Basic understanding of JavaScript
  • Familiarity with Node.js syntax and structure

2. Step-by-Step Guide

Event Emitters in Node.js facilitate the handling of events. An 'event' can be anything that happens in our application, for example, a system event or a user action.

EventEmitter Class

In Node.js, the EventEmitter is a class that we get from the 'events' module. It provides several methods, for instance, emit() and on().

  • emit(eventName, [arg1], [arg2], [...]): This method is used to trigger an event.
  • on(eventName, listener): This method is used to add a listener function to an event.

The listener function gets called whenever the event with the specified event name gets fired.

3. Code Examples

Example 1: Creating an Event Emitter

// Import the EventEmitter class from the events module
const EventEmitter = require('events');

// Create an instance of the EventEmitter class
const myEventEmitter = new EventEmitter();

// Add a listener for 'event1'
myEventEmitter.on('event1', function(){
  console.log('event1 has been fired');
});

// Emit 'event1'
myEventEmitter.emit('event1');

In the above code, we first import the EventEmitter class and then create an instance of it. We then add a listener function for the event named 'event1'. When 'event1' is emitted using the emit() method, the listener function is called, and 'event1 has been fired' is logged to the console.

Expected output

event1 has been fired

Example 2: Event Emitter with Arguments

const EventEmitter = require('events');
const myEventEmitter = new EventEmitter();

myEventEmitter.on('event2', function(arg1, arg2){
  console.log(`event2 has been fired with ${arg1} and ${arg2}`);
});

myEventEmitter.emit('event2', 'foo', 'bar');

In this example, we are passing arguments ('foo' and 'bar') to the listener function through the emit() method.

Expected output

event2 has been fired with foo and bar

4. Summary

In this tutorial, we have learned:

  • What Event Emitters in Node.js are and how they work
  • How to create custom events using the EventEmitter class
  • How to handle these custom events

For further learning, you could explore:

  • How to remove listeners using the removeListener or removeAllListeners method
  • Error handling with Event Emitters
  • The concept of 'once' listeners

5. Practice Exercises

Exercise 1

Create an event emitter for an event named 'event3' and pass two numbers as arguments to the listener function which adds them together.

Solution

const EventEmitter = require('events');
const myEventEmitter = new EventEmitter();

myEventEmitter.on('event3', function(a, b){
  console.log(`The sum is: ${a + b}`);
});

myEventEmitter.emit('event3', 5, 10);

Exercise 2

Create an event emitter for an event named 'status' that accepts an object as an argument with two properties: 'code' and 'message'. Log these properties in the listener function.

Solution

const EventEmitter = require('events');
const myEventEmitter = new EventEmitter();

myEventEmitter.on('status', function(status){
  console.log(`Status Code: ${status.code}, Message: ${status.message}`);
});

myEventEmitter.emit('status', {code: 200, message: 'OK'});

Feel free to play around with the code and experiment with different scenarios to get a better understanding of Event Emitters.

Need Help Implementing This?

We build custom systems, plugins, and scalable infrastructure.

Discuss Your Project

Related topics

Keep learning with adjacent tracks.

View category

HTML

Learn the fundamental building blocks of the web using HTML.

Explore

CSS

Master CSS to style and format web pages effectively.

Explore

JavaScript

Learn JavaScript to add interactivity and dynamic behavior to web pages.

Explore

Python

Explore Python for web development, data analysis, and automation.

Explore

SQL

Learn SQL to manage and query relational databases.

Explore

PHP

Master PHP to build dynamic and secure web applications.

Explore

Popular tools

Helpful utilities for quick tasks.

Browse tools

Interest/EMI Calculator

Calculate interest and EMI for loans and investments.

Use tool

Random Number Generator

Generate random numbers between specified ranges.

Use tool

Random String Generator

Generate random alphanumeric strings for API keys or unique IDs.

Use tool

PDF to Word Converter

Convert PDF files to editable Word documents.

Use tool

Text Diff Checker

Compare two pieces of text to find differences.

Use tool

Latest articles

Fresh insights from the CodiWiki team.

Visit blog

AI in Drug Discovery: Accelerating Medical Breakthroughs

In the rapidly evolving landscape of healthcare and pharmaceuticals, Artificial Intelligence (AI) in drug dis…

Read article

AI in Retail: Personalized Shopping and Inventory Management

In the rapidly evolving retail landscape, the integration of Artificial Intelligence (AI) is revolutionizing …

Read article

AI in Public Safety: Predictive Policing and Crime Prevention

In the realm of public safety, the integration of Artificial Intelligence (AI) stands as a beacon of innovati…

Read article

AI in Mental Health: Assisting with Therapy and Diagnostics

In the realm of mental health, the integration of Artificial Intelligence (AI) stands as a beacon of hope and…

Read article

AI in Legal Compliance: Ensuring Regulatory Adherence

In an era where technology continually reshapes the boundaries of industries, Artificial Intelligence (AI) in…

Read article

Need help implementing this?

Get senior engineering support to ship it cleanly and on time.

Get Implementation Help