Promises in JavaScript

Posted by


Promises are a powerful and flexible tool in JavaScript for managing asynchronous operations. They allow you to handle asynchronous code in a more readable and manageable way, avoiding callback hell and making your code more maintainable and easier to reason about.

In this tutorial, we will cover the basics of Promises in JavaScript and show you how to use them effectively in your code.

  1. What is a Promise?

A Promise is an object that represents the eventual completion (or failure) of an asynchronous operation, and its resulting value. Promises can be in one of three states: pending, fulfilled, or rejected.

  • pending: the initial state of a Promise, before the operation is completed.
  • fulfilled: the state of a Promise when the operation is successfully completed.
  • rejected: the state of a Promise when the operation fails.

Promises are created using the Promise constructor, which takes a callback function with two arguments: resolve and reject. Inside this callback function, you perform asynchronous operations and call resolve to fulfill the Promise or reject to reject it.

  1. Creating a Promise

Let’s create a simple Promise that resolves after a delay:

const myPromise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve('Promise resolved after 2 seconds');
    }, 2000);
});

In this example, we create a Promise that resolves after 2 seconds. The setTimeout function simulates an asynchronous operation, and when it completes, we call resolve with a message.

  1. Handling Promises

Once you have a Promise, you can handle its resolution or rejection using the .then() and .catch() methods.

myPromise.then((result) => {
    console.log(result);
}).catch((error) => {
    console.error(error);
});

The .then() method is used to handle the fulfillment of the Promise, while the .catch() method is used to handle any errors that occur during the Promise’s execution.

  1. Chaining Promises

You can chain multiple Promises together using the .then() method, which allows you to run asynchronous operations sequentially:

const promise1 = new Promise((resolve, reject) => {
    resolve('First Promise resolved');
});

const promise2 = new Promise((resolve, reject) => {
    resolve('Second Promise resolved');
});

promise1.then((result) => {
    console.log(result);
    return promise2;
}).then((result) => {
    console.log(result);
});

In this example, we create two Promises promise1 and promise2, and then chain them together using the .then() method. The result of promise1 is logged to the console, and then promise2 is executed and its result is logged as well.

  1. Error handling

If an error occurs during the execution of a Promise, you can catch it using the .catch() method:

const errorPromise = new Promise((resolve, reject) => {
    reject('Promise rejected');
});

errorPromise.catch((error) => {
    console.error(error);
});

In this example, we create a Promise that rejects immediately, and then catch the error using the .catch() method.

  1. Promise.all()

The Promise.all() method allows you to run multiple Promises concurrently and wait for all of them to complete before proceeding:

const promise1 = new Promise((resolve, reject) => {
    resolve('Promise 1 resolved');
});

const promise2 = new Promise((resolve, reject) => {
    resolve('Promise 2 resolved');
});

Promise.all([promise1, promise2]).then((results) => {
    console.log(results);
});

In this example, we create two Promises promise1 and promise2, and then use Promise.all() to wait for both of them to complete before logging the results to the console.

  1. Conclusion

Promises are a powerful tool in JavaScript for managing asynchronous operations in a more readable and manageable way. By using Promises, you can avoid callback hell and create more maintainable and flexible code.

I hope this tutorial has given you a good introduction to Promises in JavaScript and helped you understand how to use them effectively in your code. If you have any questions or need further clarification, feel free to ask!

0 0 votes
Article Rating
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@andrericardo6992
1 month ago

Muito obrigado por compartilhar conhecimento me ajudou muito