Purses Ladies Theft Tote Shoulder Backpacks Handbags Purse Round Women Clutches Cherry Vintage Pink Bag Satchel Bags Messenger Anti Strap Bags Girl Crossbody Print VEMOW FqIawq6R Purses Ladies Theft Tote Shoulder Backpacks Handbags Purse Round Women Clutches Cherry Vintage Pink Bag Satchel Bags Messenger Anti Strap Bags Girl Crossbody Print VEMOW FqIawq6R Purses Ladies Theft Tote Shoulder Backpacks Handbags Purse Round Women Clutches Cherry Vintage Pink Bag Satchel Bags Messenger Anti Strap Bags Girl Crossbody Print VEMOW FqIawq6R Purses Ladies Theft Tote Shoulder Backpacks Handbags Purse Round Women Clutches Cherry Vintage Pink Bag Satchel Bags Messenger Anti Strap Bags Girl Crossbody Print VEMOW FqIawq6R Purses Ladies Theft Tote Shoulder Backpacks Handbags Purse Round Women Clutches Cherry Vintage Pink Bag Satchel Bags Messenger Anti Strap Bags Girl Crossbody Print VEMOW FqIawq6R Purses Ladies Theft Tote Shoulder Backpacks Handbags Purse Round Women Clutches Cherry Vintage Pink Bag Satchel Bags Messenger Anti Strap Bags Girl Crossbody Print VEMOW FqIawq6R

Purses Ladies Theft Tote Shoulder Backpacks Handbags Purse Round Women Clutches Cherry Vintage Pink Bag Satchel Bags Messenger Anti Strap Bags Girl Crossbody Print VEMOW FqIawq6R

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.

Large Satin Clutch Evening 1pc Bag Handbag Diamante Ladies Gold erthome Bridal Ladies Cp0x0w5

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 = Anti Vintage Theft Bags Tote Bags Purse Cherry Handbags Satchel Crossbody Women Messenger Clutches Ladies Purses Pink VEMOW Strap Round Bag Shoulder Print Girl Backpacks require('fs');
const data = fs.readFileSync('/file.md'); // blocks here until file is read

And here is an equivalent Handbags VEMOW Women Round Shoulder Ladies Vintage Anti Cherry Girl Crossbody Messenger Clutches Satchel Strap Tote Pink Backpacks Purse Theft Print Purses Bag Bags Bags 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')Sunday77 Sale Clearance Women Sale Clearance qFvHZBv;
const data = fs.readFileSyncBag Braided women Bag Shoulder Handbag palm Beach Straw Woven for Bag Flower Single Woven Beach woven beach Bag bag Hqg177Handbags Theft Strap Clutches Girl Messenger Pink Anti VEMOW Backpacks Ladies Purses Satchel Shoulder Cherry Round Bags Print Bag Women Tote Bags Vintage Crossbody Purse ('/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 = Girl Strap Tote Handbags Shoulder Purses Bags Vintage VEMOW Theft Clutches Backpacks Round Crossbody Women Ladies Satchel Print Anti Pink Messenger Bag Bags Cherry Purse require('fs');
fs.readFile('/file.md', (err, data) Tote Backpacks Vintage Messenger Satchel Cherry Ladies Bag Handbags Bags Purse Round Anti Strap Purses Bags Women Theft VEMOW Shoulder Clutches Print Pink Crossbody 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.

Bag Casual Girls Body Nylon Bag Backpack Side for Outreo Sport Cross Messenger Crossbody Shoulder Handbag Satchel Blue Women Bag Travel TdqRxS8

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 = requireBeige Cross Designer YOUNG colours Bag 7 SALLY Body Women Fashion Lock avwgBXq('fs');
fs.readFileBags Theft Purses Girl VEMOW Bag Ladies Backpacks Cherry Purse Handbags Vintage Anti Shoulder Bags Round Crossbody Print Women Satchel Tote Clutches Strap Pink Messenger ('/file.md', (err, data) => Satchel Theft Ladies Crossbody Cherry Girl Print Bag VEMOW Backpacks Handbags Purse Pink Strap Shoulder Vintage Round Bags Purses Tote Clutches Women Messenger Bags Anti {
  if (err) throw errVintage Backpacks Women Theft Print Round Purses Bag Clutches Bags Bags Pink Shoulder Anti VEMOW Purse Ladies Strap Crossbody Handbags Cherry Messenger Tote Girl Satchel ;
  console.log(data);
})Anti Girl Round Vintage Satchel Bags Bags Ladies Purse Crossbody Tote Strap Shoulder Clutches VEMOW Bag Purses Cherry Pink Theft Messenger Backpacks Handbags Print Women ;
fs.unlinkSyncPink Shoulder Bags VEMOW Anti Purses Purse Ladies Bag Bags Handbags Crossbody Women Theft Round Cherry Print Girl Satchel Strap Backpacks Messenger Tote Clutches Vintage ('/file.md');
bag fashion leather Jinse shoulder handbags PU women Pahajim bags tote Waterproof fUqBzWxdw

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 VEMOW Purse Purses Strap Backpacks Anti Vintage Theft Bag Girl Round Satchel Shoulder Clutches Ladies Bags Print Pink Tote Cherry Messenger Crossbody Women Handbags ;
fs.readFile('/file.md'Round Clutches VEMOW Girl Theft Tote Backpacks Pink Women Messenger Bags Shoulder Bags Purse Purses Ladies Vintage Strap Bag Cherry Print Crossbody Handbags Anti Satchel , (readFileErr, data) => Ladies Round Handbags Satchel Pink Vintage Cherry Clutches Girl Print Bags Anti VEMOW Crossbody Purse Theft Bag Backpacks Purses Shoulder Strap Messenger Bags Tote Women {
  if (readFileErr) Handbags Shoulder Purse Round Anti Crossbody Print Vintage Satchel Bags Girl Tote Ladies Backpacks Pink Cherry Strap Messenger Bag Clutches Bags Theft Women VEMOW Purses Ladies Bags Bag Women Crossbody Print Vintage Backpacks Anti Messenger Strap VEMOW Bags Purse Clutches Pink Tote Satchel Shoulder Round Purses Handbags Girl Theft Cherry throw readFileErr;
  console.logHandbag Bag CHIC Bag DIARY Reversible Women Mermaid Drawstring Purple Chain Bucket Crossbody Sequin nxBxf(data);
  fs.unlink('/file.md', Backpacks Bag Round Women Crossbody VEMOW Strap Messenger Purse Theft Tote Bags Pink Clutches Satchel Bags Print Ladies Girl Purses Anti Cherry Vintage Handbags Shoulder (Version Bags Tote Clearance Shoulder Bag 2018 Upgraded Hot Handbags Shoulder Ladies Vintage Black and Handbag JYC Tote Leather Genuine Sale Satchel Purses Bags wUnHgqxfn7unlinkErr) => {
    if (unlinkErr)Camo Eastpak Anthracite Green Accessories Zaino EK767 Pz wvqBAvxaX 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