Asynchronous Functions and the Node.js Event Loop - GeeksforGeeks

14 Oct, 2021
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:
// Normal Functionfunction add(a,b){    return a+b;}  // Async Functionasync function asyncadd(a,b){    Return a+b;}
Asynchronously opening and writing the contents of a file
// load http modulevar http = require('http');var fs = require('fs');  // load http modulevar http = require('http');var fs = require('fs');  // create http serverhttp.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/');
Node.js
Web Technologies
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Node.js fs.writeFile() Method
Node.js fs.readFile() Method
How to install the previous version of node.js and npm ?
Difference between promise and async await in Node.js
How to use an ES6 import in Node.js?
Remove elements from a JavaScript Array
Convert a string to an integer in JavaScript
How to fetch data from an API in ReactJS ?
Top 10 Projects For Beginners To Practice HTML and CSS Skills
Difference between var, let and const keywords in JavaScript