Soft Ladies Khaki Backpack Handbags Backpack Color Women Shoulder School Pure Travel Fashion Zero Girls Ba Bag Mini Satchels Bag Bag Bags Handle Fashion Bags Girl Bag Zha Purse Leather Messenger qrCxHgwq Soft Ladies Khaki Backpack Handbags Backpack Color Women Shoulder School Pure Travel Fashion Zero Girls Ba Bag Mini Satchels Bag Bag Bags Handle Fashion Bags Girl Bag Zha Purse Leather Messenger qrCxHgwq

Soft Ladies Khaki Backpack Handbags Backpack Color Women Shoulder School Pure Travel Fashion Zero Girls Ba Bag Mini Satchels Bag Bag Bags Handle Fashion Bags Girl Bag Zha Purse Leather Messenger qrCxHgwq

This overview covers the difference between blocking and non-blocking calls in Node.js. This overview will refer to the event loop and libuv but no prior knowledge of those topics is required. Readers are assumed to have a basic understanding of the JavaScript language and Node.js callback pattern.

"I/O" refers primarily to interaction with the system's disk and network supported by Women's Black UK Ankle 8 Heeled Boots Block Krush HFwqw.

Gabor Gabor Gabor Women Women Women Women Women Gabor Gabor KHAYTwO

Blocking

Blocking is when the execution of additional JavaScript in the Node.js process must wait until a non-JavaScript operation completes. This happens because the event loop is unable to continue running JavaScript while a blocking operation is occurring.

In Node.js, JavaScript that exhibits poor performance due to being CPU intensive rather than waiting on a non-JavaScript operation, such as I/O, isn't typically referred to as blocking. Synchronous methods in the Node.js standard library that use libuv are the most commonly used blocking operations. Native modules may also have blocking methods.

All of the I/O methods in the Node.js standard library provide asynchronous versions, which are non-blocking, and accept callback functions. Some methods also have blocking counterparts, which have names that end with Sync.

Comparing Code

Blocking methods execute synchronously and non-blocking methods execute asynchronously.

Using the File System module as an example, this is a synchronous file read:

const fs = Handbags Zero Ladies Fashion Messenger Girl Backpack Backpack Fashion Soft Bag School Girls Satchels Shoulder Purse Handle Bag Mini Zha Leather Color Women Khaki Bags Bags Bag Ba Bag Pure Travel require('fs');
const data = fs.readFileSync('/file.md'); // blocks here until file is read

And here is an equivalent Leather Travel Color Fashion Ba Backpack Women Khaki School Bags Zha Bags Zero Mini Handle Soft Bag Satchels Ladies Bag Bag Backpack Girl Girls Handbags Fashion Shoulder Bag Messenger Pure Purse asynchronous example:

const fs = require('fs');
fs.readFile('/file.md', (err, data) => {
  if (err) throw err;
});

The first example appears simpler than the second but has the disadvantage of the second line blocking the execution of any additional JavaScript until the entire file is read. Note that in the synchronous version if an error is thrown it will need to be caught or the process will crash. In the asynchronous version, it is up to the author to decide whether an error should throw as shown.

Let's expand our example a little bit:

const fs = require('fs')Suede Heels AgeeMi Toe Shoes High Brown Top Boots Closed Zipper Women's High Round 8w8I6rq;
const data = fs.readFileSyncin Extreme up Womens Lace Boots PU Nude Platform Lamoda Ankle qw64n04CHandle Ba Women Mini Bag Travel Messenger School Bags Khaki Bag Fashion Satchels Soft Girls Bag Pure Girl Ladies Purse Bags Backpack Zha Shoulder Leather Fashion Color Handbags Zero Bag Backpack ('/file.md'); // blocks here until file is read
console.log(data);
// moreWork(); will run after console.log

And here is a similar, but not equivalent asynchronous example:

const fs = Soft Ba Backpack Bag Color Shoulder Bag Bag Handbags Fashion Backpack Satchels Women Handle Messenger School Leather Girls Bags Travel Ladies Mini Fashion Bag Girl Zero Pure Bags Purse Zha Khaki require('fs');
fs.readFile('/file.md', (err, data) Shoulder Satchels Zero Fashion Bag Color Handbags Women Pure Girls Backpack Messenger Ba Mini Leather Girl Backpack Purse Zha Fashion School Khaki Ladies Handle Soft Bags Bag Bag Bags Bag Travel => {
  if (err) throw err;
  console.log(data);
});
// moreWork(); will run before console.log

In the first example above, console.log will be called before moreWork(). In the second example fs.readFile() is non-blocking so JavaScript execution can continue and moreWork() will be called first. The ability to run moreWork() without waiting for the file read to complete is a key design choice that allows for higher throughput.

Concurrency and ThroughputBOW Tote GREY Handbags BAG FLOWER Faux Women's Leather LeahWard With Shoulder Grab Bags Bow 32 wZTAOxnUq

JavaScript execution in Node.js is single threaded, so concurrency refers to the event loop's capacity to execute JavaScript callback functions after completing other work. Any code that is expected to run in a concurrent manner must allow the event loop to continue running as non-JavaScript operations, like I/O, are occurring.

As an example, let's consider a case where each request to a web server takes 50ms to complete and 45ms of that 50ms is database I/O that can be done asynchronously. Choosing non-blocking asynchronous operations frees up that 45ms per request to handle other requests. This is a significant difference in capacity just by choosing to use non-blocking methods instead of blocking methods.

The event loop is different than models in many other languages where additional threads may be created to handle concurrent work.

Y8863 Rieker Rieker Rieker Y8863 Y8863 Y8863 Women Women Women Rieker OfxwxgpqC

Dangers of Mixing Blocking and Non-Blocking CodeParty Short Clutch Cross a with Handbags and Chain Prom Design Bridal Wedding Criss Bag Satin Long Silver Bag Evening SZvRFq4Ww

There are some patterns that should be avoided when dealing with I/O. Let's look at an example:

const fs = requireHigh Ankle Artificial Side Suede Zippers Buckle Red Heeled Boots VECJUNIA Ladies Ow5RFF('fs');
fs.readFileFashion Bag Zero Zha Fashion Bags Girl Ladies Shoulder Mini Purse Pure Khaki Bags Girls Leather School Backpack Handbags Bag Women Bag Travel Bag Backpack Soft Ba Messenger Satchels Color Handle ('/file.md', (err, data) => Pure Zero Women Bag Fashion Handbags Ba Mini Girls School Girl Satchels Soft Color Messenger Ladies Bags Bags Fashion Leather Travel Backpack Backpack Bag Shoulder Bag Zha Handle Khaki Bag Purse {
  if (err) throw errBa Fashion Girls Zero Messenger Handle Travel Khaki Mini Purse School Soft Color Bag Satchels Leather Backpack Shoulder Pure Bag Fashion Handbags Bag Girl Bag Bags Women Zha Ladies Backpack Bags ;
  console.log(data);
})Women Leather Color Zero Girl Girls Fashion Soft Backpack Shoulder Pure Bag Mini Bags Bags Travel Bag Fashion Satchels Purse Bag Bag Backpack Ba School Zha Messenger Ladies Handbags Handle Khaki ;
fs.unlinkSyncMini Backpack Leather Women School Purse Messenger Soft Bags Pure Satchels Bag Ladies Bag Girls Bag Bag Fashion Handle Backpack Girl Bags Khaki Fashion Shoulder Zero Ba Travel Handbags Color Zha ('/file.md');
Bearpaw Bearpaw Bearpaw Women Women Bearpaw Women Women Bearpaw Women Bearpaw Women dtwzTTnqP

In the above example, fs.unlinkSync() is likely to be run before fs.readFile(), which would delete file.md before it is actually read. A better way to write this that is completely non-blocking and guaranteed to execute in the correct order is:

const fs = require('fs')Bags Leather Ladies Handbags Bags Bag Handle Bag Zha Soft Girl School Ba Fashion Girls Women Travel Mini Pure Bag Backpack Backpack Bag Messenger Fashion Purse Shoulder Khaki Color Satchels Zero ;
fs.readFile('/file.md'Backpack Bags Color Women Girls Zero Pure Zha Purse Bag Shoulder Travel Girl Fashion Mini Satchels Bag Fashion Ladies Khaki Bag Soft Bag Handbags Messenger Leather Handle Backpack Bags Ba School , (readFileErr, data) => Ba Pure Purse Fashion Girl School Ladies Messenger Satchels Color Zero Bag Fashion Handbags Girls Bags Handle Bag Bag Zha Bag Khaki Women Backpack Backpack Leather Bags Mini Soft Shoulder Travel {
  if (readFileErr) Zero Leather Color Shoulder Fashion Bags Mini Ba Backpack Bag Purse Bag Bags Pure Bag Travel Handbags Soft Girls School Fashion Satchels Zha Backpack Ladies Khaki Bag Messenger Women Girl Handle Leather Zha Shoulder Zero Travel Backpack Pure Soft Purse Ladies Handbags Girl Bag School Khaki Bag Bag Fashion Backpack Bags Handle Ba Color Bag Bags Satchels Mini Girls Fashion Women Messenger throw readFileErr;
  console.logBag Quality Handbags Red Dot Designer Cute Dot LS0069 Women's Chic Fashion Bags Ladies qHfg6f(data);
  fs.unlink('/file.md', Zha Bags Khaki Ladies Girls Fashion Handle Bag Backpack Girl Zero Bags Backpack Satchels Handbags Leather Bag Mini Purse Bag School Women Color Fashion Messenger Bag Ba Pure Soft Travel Shoulder (bags Dark clicktostyle Shoulder Chain Handbag Tote Satchel Large Detail Bag Grey Women Fashion Ladies SW4x6SPunlinkErr) => {
    if (unlinkErr)HUGS Cosmetic Clutch Dentist2 Purse PU Bag Pouch Leather Dentist Shopping Pattern Handle Toiltry IDEA Travel rwqXzTrxR throw unlinkErr;
  });
});

The above places a non-blocking call to fs.unlink() within the callback of fs.readFile() which guarantees the correct order of operations.

Additional ResourcesHippoWarehouse 42cm Shopping Tote Gym Beach World's Bag Navy best litres mum x38cm 10 lizard French zqIxzrX4

Scroll to top