Asynchronous Functions and the Node.js Event Loop Last Updated : 14 Oct, 2021 Comments Improve Suggest changes Like Article Like Report Asynchronous Functions Everyone knows JavaScript is asynchronous in nature and so is the Node. The fundamental principle behind Node is that an application is executed on a single thread or process and the events are thus handled asynchronously. If we consider any typical web server like Apache, it requires separate threads for each process until the request is satisfied. The disadvantage in using multi-thread is they are not memory intensive and doesn’t scale very well. Also, we have to ensure that each process must be thread safe and deadlock should not appear. But Node does things differently. On starting a Node application, it creates only a single thread of execution. When the Node receives a request, it assigns the thread to that process and no other request can be processed until it has finished processing the code for the current request. Therefore, Node handles multiple requests at the same time by using event loop and callback functions. An Event Loop is a type of functionality which basically polls for specific events and invokes event handlers when required. A Callback Function is this event handler in Node. In Node applications, the Node initiates the request but does not wait around the request to get the response. Instead of that, it attaches a callback function to the request. When the request has been completed or the response has been received by the request, the callback function emits an event to do something with either the results of the requested action or the resource requested. If multiple people access a Node application at the same time, and the application needs to access a resource from a file, Node attaches a callback function with each request. As soon as the resource becomes available to that particular request, a callback function is called to each person’s request. The Node can handle other requests in the meantime. The serving of the parallel requests in the Node application depends upon how busy the application is and how it is designed? Examples: javascript // Normal Function function add(a,b){ return a+b; } // Async Function async function asyncadd(a,b){ Return a+b; } Asynchronously opening and writing the contents of a file javascript // load http module var http = require('http'); var fs = require('fs'); // load http module var http = require('http'); var fs = require('fs'); // create http server http.createServer(function (req, res) { // open and read in helloworld.js fs.readFile('helloworld.js', 'utf8', function(err, data) { res.writeHead(200, {'Content-Type': 'text/plain'}); if (err) res.write('Could not find or open file for reading\n'); else // if no error, writing JS file to a client res.write(data); res.end(); }); }).listen(8124, function() { console.log('bound to port 8124');}); console.log('Server running on 8124/'); Comment More infoAdvertise with us Next Article Asynchronous Functions and the Node.js Event Loop M mayank021 Follow Improve Article Tags : Algorithms DSA Practice Tags : Algorithms Similar Reads NodeJS Event Loop The event loop in Node.js is a mechanism that allows asynchronous tasks to be handled efficiently without blocking the execution of other operations. It:Executes JavaScript synchronously first and then processes asynchronous operations.Delegates heavy tasks like I/O operations, timers, and network r 5 min read Explain the Mechanism of event loop in Node.js JavaScript is a single-threaded, non-blocking, asynchronous language that uses the concept of event loop to make it work asynchronously even if it is single-threaded. Feature: The Event Loop is responsible for sending functions from the event queue to the Stack for processing when it becomes empty. 2 min read Explain the Event-Driven Architecture of NodeJS NodeJS uses an event-driven architecture, which is a key part of how it handles many tasks at once without blocking. This approach relies on events, event emitters, and listeners to manage asynchronous operations efficiently. Let's explore how this works.What is Event-Driven Architecture?Event-drive 5 min read Understanding Node.js Async Flows Node.js is a powerful runtime environment for building server-side applications. One of the key features of Node.js is its ability to handle asynchronous flows, which allows it to process multiple requests concurrently and improve the performance of web applications. Async flows in Node.js are achie 5 min read Asynchronous Programming in NodeJS Asynchronous programming in NodeJS allows tasks to run in the background without blocking execution, enabling efficient handling of multiple operations. It uses the event loop, callbacks, promises, and async/await to manage non-blocking I/O tasks seamlessly.Understanding Asynchronous ProgrammingAsyn 5 min read Like