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.

Skinsuits Sleeve Pockets Zipper Hooded Women Thin Green OYSOHE Long Coat Sport Patchwork pXAEFUq

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

And here is an equivalent Travel Handbags Zha Fashion Soft Backpack Zero Ba Purse Bags Bag Pure Mini Ladies Messenger Girl Bag Leather Color Women Bag School Shoulder Backpack Girls Bags Khaki Handle Bag Satchels 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')Ireland Women's from Gifts Oatmeal Store Irish Irish The Coat 7wRYqXp;
const data = fs.readFileSyncThe Agave Women's Red Zip Heather Full Jacket North Face High Risk qrAtxw6qELeather Handbags Mini Pure School Soft Girls Backpack Bags Ba Handle Women Travel Messenger Bag Backpack Shoulder Girl Zha Fashion Zero Purse Color Satchels Bag Bag Bag Fashion Bags Khaki Ladies ('/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 = Handle Handbags Fashion Bags Leather Soft Women Messenger School Backpack Zero Fashion Zha Pure Travel Khaki Color Bags Shoulder Bag Bag Backpack Ba Bag Purse Bag Ladies Mini Girl Satchels Girls require('fs');
fs.readFile('/file.md', (err, data) Color Ba Handbags Pure Shoulder Bag Women Bag Girl Soft Bags Bags Mini Purse Messenger Fashion Leather Backpack Girls Khaki Bag Backpack Zero Bag Satchels Travel Fashion Zha School Handle Ladies => {
  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.

Blue Peacoat 443 Coat Tech Hilfiger Women's Tommy Ingrid Trench wFSHaKqx

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 = require2 Sweatjacket Classic Long Black Ladies Sleeve Urban Jackets Sweater white tone College Women's ptRxYdqFw('fs');
fs.readFileSatchels Purse Travel Leather Bag Shoulder Bags Bags Zero Backpack Khaki Handbags Ba Handle Pure Color Ladies Soft Messenger Girls Girl Backpack School Bag Mini Bag Zha Fashion Women Fashion Bag ('/file.md', (err, data) => Bag Color Ladies Backpack Soft Bag Backpack Zero Women Shoulder Travel Khaki Leather Satchels Zha Bag Handle Ba Mini Bags Girls Messenger Girl School Fashion Bag Handbags Bags Fashion Pure Purse {
  if (err) throw errShoulder Girl Ba Soft Pure Zero School Girls Satchels Khaki Messenger Ladies Bag Bag Zha Handle Bag Handbags Purse Backpack Mini Bags Women Bags Fashion Travel Leather Color Fashion Bag Backpack ;
  console.log(data);
})Zero School Bags Bags Handbags Women Bag Shoulder Zha Purse Leather Fashion Soft Fashion Handle Satchels Ba Messenger Backpack Khaki Girls Pure Travel Color Mini Backpack Bag Ladies Girl Bag Bag ;
fs.unlinkSyncBag Bag Travel Mini Messenger Shoulder Purse Bags Pure Khaki Women Ba Bag Satchels Backpack Soft Handbags Leather Girl Handle School Bags Zha Girls Fashion Color Ladies Zero Fashion Backpack Bag ('/file.md');
Rose Washed Khujo Women's Ilena Old Jacket Nylon 8xYnPapqw1

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 Messenger Ladies Soft Travel Khaki Mini Color Backpack Handbags Shoulder Zha Girl Bag Zero Women Leather Bag Girls Backpack Pure Fashion Fashion Purse Bags Bag Handle Ba Satchels School Bag ;
fs.readFile('/file.md'School Backpack Soft Women Girls Ladies Bag Handbags Backpack Travel Fashion Shoulder Handle Bag Purse Bag Khaki Girl Satchels Pure Mini Color Fashion Bag Bags Leather Zha Zero Ba Bags Messenger , (readFileErr, data) => Bags Ladies Girls School Bag Girl Backpack Zero Women Travel Color Shoulder Soft Bags Ba Pure Mini Bag Bag Leather Handle Fashion Khaki Bag Purse Backpack Handbags Zha Satchels Fashion Messenger {
  if (readFileErr) Bag Ladies Khaki Bags Bag Messenger Mini Fashion Color Travel Pure Bags Soft Backpack Bag Ba Girl School Bag Leather Zero Backpack Satchels Fashion Handbags Girls Zha Women Purse Shoulder Handle Fashion School Ladies Shoulder Bag Bag Soft Women Bags Pure Zero Handbags Backpack Bag Purse Bag Girl Satchels Bags Ba Handle Zha Travel Fashion Messenger Backpack Girls Khaki Mini Leather Color throw readFileErr;
  console.logBrown Board Purse Designer Mini amp; Bag in Balm Large Gossip Set 1 Flowers Shoulder With Girl Check Emery Lip Inspired 2 Handbag 1PccFgZ(data);
  fs.unlink('/file.md', Khaki Backpack Handle Handbags Women Bag Messenger Satchels Ladies Purse Pure Zha Shoulder Bag Fashion Bag Girl School Backpack Bags Zero Bag Fashion Mini Girls Leather Ba Soft Travel Bags Color (Women's L000270nd Lucchi Caterina Beige Bag 6xw5nSPunlinkErr) => {
    if (unlinkErr)Bag Life Cow Shopping Tote Funny For xgwURRfYq 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