RivoCode

JavaScript Fundamentals · Async JavaScript · Lesson 27 of 48

Promises

Concept

Promises

A Promise represents a value that will be available now, later, or never. then() handles success and catch() handles failure.

A Promise is always in one of three states — pending, fulfilled, or rejected — and once it settles into fulfilled or rejected, it never changes state again.

By the end of this lesson
  • Explain the core idea behind Promises.
  • Predict output before running a change.
  • Test one realistic and one unusual input.
  • Use the result to make the next decision.
How to study this page
  1. 1. Read one concept.
  2. 2. Change the example.
  3. 3. Run, compare, and explain.
  4. 4. Complete the challenge below.
Syntax
new Promise((resolve, reject) => {
  // resolve(value) on success
  // reject(error) on failure
})
  .then((value) => {})
  .catch((error) => {});
ExampleRunnable
const fetchData = new Promise((resolve) => {
  setTimeout(() => resolve("Data loaded"), 500);
});
fetchData.then((data) => console.log(data));
Try it Yourself »
Handling a rejected Promise
const risky = new Promise((resolve, reject) => {
  reject(new Error("Something failed"));
});
risky.catch((error) => console.log(error.message));
Self-check before continuing

Without looking at the example, describe what changes when you modify one input in Promises. Then reopen the editor and prove your explanation with a small test.

You are ready to continue when you can predict, test, and explain the result.

Your turn

Write a Promise that resolves with your name after 1 second.

Loading editor…

Console

Output will appear here...