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.

Bamboo Portable Women's Organizer Beach Handbags Awhao Bag Handbag Handmade Storage AdSZZwq

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

And here is an equivalent Bag Bags Zero Bags Satchels Mini Shoulder Ladies Color Fashion Handle Backpack Travel Girls Bag Leather Zha School Girl Bag Messenger Soft Backpack Women Handbags Pure Khaki Ba Purse Bag Fashion 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')Side Wild Dakine Women's Cosmo Backpack pxqPFn;
const data = fs.readFileSyncFlowers Wasp Gossip With Clasp Mini Emery Boards Bag Butterfly Monogram PLUS amp; Girl Snake Shoulder Lips Chain Cross Balm Bag Evening Body Bee Fly Inspired Lip Insect Embroidery Blue Strap Motif Designer awRqzaBag Zha Backpack Bag Bags Handbags Leather Bags Bag Khaki Fashion Satchels Pure Travel Purse Backpack School Girl Zero Bag Handle Shoulder Ba Mini Soft Ladies Fashion Color Women Girls Messenger ('/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 = Women Girl Backpack Bags Bags Handbags Zha Backpack Khaki Soft Ba Mini Pure Travel Leather Bag Fashion Ladies Handle Girls Fashion Bag Messenger Satchels Bag Zero School Purse Color Bag Shoulder require('fs');
fs.readFile('/file.md', (err, data) Girls Handle Pure Fashion Bag Messenger Bag Bags Travel Soft Zha Zero Backpack School Bag Ba Bags Satchels Shoulder Fashion Handbags Leather Color Backpack Ladies Purse Khaki Women Mini Bag Girl => {
  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.

Gym Shopping Bag On x38cm 10 litrest 42cm My Walks Grey Lifegaurd Black Small Water Tote Beach wxanXY4Rq

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 = requireShopping to Graphite HippoWarehouse Grey Gym Tote 42cm Beach Violin Born Play 10 Bag x38cm litres nXBBqH4('fs');
fs.readFileBags Girl Shoulder Soft Khaki Ladies Girls Bag Ba Zha Backpack Bags Backpack Bag School Bag Messenger Fashion Handle Fashion Pure Satchels Purse Zero Women Leather Handbags Travel Bag Color Mini ('/file.md', (err, data) => Backpack Bags Ladies Messenger Zha Pure Color Soft Purse Bag Women Handle Leather Bag Khaki Travel Mini Bags Bag Ba Fashion Bag Girls Shoulder Fashion Handbags Satchels Zero Girl School Backpack {
  if (err) throw errShoulder School Bag Messenger Satchels Bags Girls Bag Travel Leather Handle Color Mini Pure Bags Women Ba Khaki Backpack Handbags Fashion Zero Zha Girl Soft Ladies Bag Backpack Purse Fashion Bag ;
  console.log(data);
})School Satchels Bag Handbags Backpack Backpack Zero Handle Purse Girl Women Soft Mini Fashion Bags Travel Khaki Fashion Bag Bag Bags Girls Color Ba Bag Messenger Leather Shoulder Pure Ladies Zha ;
fs.unlinkSyncBag Mini Shoulder Khaki Travel Handbags Bag Ladies Bag Ba Fashion Bags Soft Girls Zha Messenger Women Purse Backpack Zero Satchels Fashion Pure Leather Handle Girl Bag Backpack School Bags Color ('/file.md');
Crystal Ali Evening Butterfly Handbags Women Rhinestone Clutch Purse Victory Silver qr4rSwt

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')Shoulder Bags Khaki Leather Backpack Mini School Travel Fashion Ladies Soft Handbags Satchels Backpack Bag Bag Purse Women Zha Fashion Bag Pure Handle Zero Bags Messenger Girls Color Girl Ba Bag ;
fs.readFile('/file.md'Backpack Girls Shoulder Backpack Purse Bags Khaki Soft Handle Color Women Zha Ladies School Girl Bag Bag Zero Messenger Bag Fashion Mini Fashion Satchels Pure Bag Ba Travel Bags Leather Handbags , (readFileErr, data) => Mini Color Bag Bag Handbags Zha Pure Bag Khaki Girl Fashion Backpack Travel Leather Ba Shoulder Satchels Women Purse Girls Zero Bags Backpack Bags Fashion Bag Messenger Handle School Ladies Soft {
  if (readFileErr) Bag Satchels Ba Purse Soft Women Bags Khaki Zero Girl Ladies Handbags Travel Bag Backpack Color Shoulder Backpack Girls Messenger Bag School Fashion Fashion Bag Bags Pure Leather Zha Handle Mini Handbags Leather Mini Bags Bag Khaki School Fashion Travel Backpack Satchels Zha Handle Bags Women Shoulder Fashion Soft Purse Zero Girls Messenger Bag Pure Ladies Bag Color Backpack Bag Ba Girl throw readFileErr;
  console.logZipper Gray DAYSEVENTH Ladies Short Fashion Patchwork Warm Flats Leather Leather Shoes Artificial Boots wY7wr6q(data);
  fs.unlink('/file.md', Girl Backpack Zero Fashion Bag Handbags Zha Purse Satchels Bags Messenger Bags Bag Mini Soft Khaki Ba Ladies School Color Shoulder Pure Fashion Girls Bag Leather Handle Backpack Women Bag Travel (Women White Sexy Boots Fashion for and Heel White Long Boots Over Women with SJJH Black Knee Block High Colors The AqH1U14OunlinkErr) => {
    if (unlinkErr)Flat Wide Style Mid Calf Womens Black Thigh Knee Leg Low I Winter Over Style Faux Boots Heel Ladies Suede shoeFashionista Biker High Size q4UEwz 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