Promises

Introduction

Promises in JavaScript are used to handle asynchronous operations in a cleaner and more organized way. They help developers manage tasks like fetching data from a server, reading files, or performing background operations without blocking the main program.

What is a Promise

A Promise is an object that represents the result of an asynchronous operation. It can be in one of three states

Pending means the operation is still in progress
Fulfilled means the operation completed successfully
Rejected means the operation failed

Why Use Promises

Promises make code easier to read and maintain compared to traditional callback functions
They help avoid callback nesting issues known as callback hell
They improve error handling using a structured approach
They allow chaining multiple asynchronous operations

Creating a Promise

A Promise is created using the Promise constructor. It takes a function with two parameters resolve and reject

Example

let myPromise = new Promise(function(resolve, reject) {
let success = true;

if (success) {
resolve("Operation successful");
} else {
reject("Operation failed");
}
});

Handling Promises

Promises are handled using then catch and finally methods

then is used when the promise is fulfilled
catch is used when the promise is rejected
finally runs regardless of the result

Example

myPromise
.then(function(result) {
console.log(result);
})
.catch(function(error) {
console.log(error);
})
.finally(function() {
console.log("Task completed");
});

Chaining Promises

Promises can be chained to perform multiple asynchronous operations step by step

Example

function stepOne() {
return new Promise(resolve => {
resolve("Step One Completed");
});
}

function stepTwo(data) {
return new Promise(resolve => {
resolve(data + " and Step Two Completed");
});
}

stepOne()
.then(stepTwo)
.then(function(result) {
console.log(result);
});

Real World Use Case

Promises are commonly used when working with APIs. For example fetching data from a server

fetch("https://api.example.com/data")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.log(error));

Advantages of Promises

Improves code readability and structure
Provides better error handling
Supports chaining of asynchronous tasks
Widely supported in modern JavaScript

Conclusion

Promises are an essential part of modern JavaScript development. They simplify asynchronous programming and make code more efficient and manageable for real world applications.

Home » Advanced JavaScript > Asynchronous JavaScript > Promises