DEV Community

Tanzeel Ur Rehman
Tanzeel Ur Rehman

Posted on

Understanding JavaScript Promises

A promise is like a special kind of present. Imagine you're 5 years old and you really want a new toy. You ask your mom for a new toy and she says, "I promise I'll get you a new toy, but it might take some time to find the perfect one. In the meantime, you can do other things and play with your other toys."

In this situation, your mom's promise is like a special kind of present that she's going to give you in the future. You might not have the toy right now, but you know that your mom will get it for you eventually.

A JavaScript Promise is a special kind of object that helps you deal with something called "asynchronous code." Asynchronous code is code that takes some time to run, like when you are waiting for a website to load or a file to download.

Promises make it easier to work with asynchronous code by giving you a way to say "when this task is finished, do this thing." For example, you might have a Promise that says "when the file finishes downloading, log a message to the console."

To use a Promise, you first need to create one. You can do this by calling the Promise constructor and passing it a function that has two arguments: resolve and reject. The resolve function is called when the asynchronous task is successfully completed, and the reject function is called if there is an error.

Here's an example of a Promise that waits for a file to download:

const downloadPromise = new Promise((resolve, reject) => {
  // Start the download
  const file = startDownload();

  // Wait for the download to finish
  file.on('finish', () => {
    // The download was successful, so call resolve
    resolve();
  });

  file.on('error', (error) => {
    // There was an error, so call reject
    reject(error);
  });
});
Enter fullscreen mode Exit fullscreen mode

Once you have created a Promise, you can use its then method to specify what should happen when the asynchronous task is completed. The then method takes two arguments: a function to call if the Promise is resolved, and a function to call if the Promise is rejected.

Here's an example of using the then method with the downloadPromise from above:

downloadPromise.then(
  () => {
    console.log('The download was successful!');
  },
  (error) => {
    console.log(`There was an error: ${error}`);
  }
);
Enter fullscreen mode Exit fullscreen mode

Top comments (0)