Skip to main content

Command Palette

Search for a command to run...

JavaScript Promises Explained with Harry Potter

Updated
•View as Markdown
JavaScript Promises Explained with Harry Potter
A
Backend Developer

Most developers struggle with Promises.

Not because they’re hard…
But because they’re explained badly.

So let’s learn them using something fun:

Harry Potter


What Is a Promise?

Think of a Promise like a magic spell.

When Harry casts a spell, 3 things can happen:

  • Success (fulfilled) → Spell works

  • Failure (rejected) → Spell fails

  • Casting (pending) → Still in progress

That’s exactly what a Promise is in JavaScript.


Example

const spell = new Promise((resolve, reject) => {
  let success = true;

  if (success) {
    resolve("Spell Worked!");
  } else {
    reject("Spell Failed!");
  }
});

resolve() = success
reject() = failure


.then() & .catch()

What happens after casting the spell?

spell
  .then(result => console.log(result))
  .catch(error => console.log(error));

Story Analogy:

  • Harry casts Lumos → Room lights up → 🎉 Celebration

  • Spell fails → Something explodes → 💥 Chaos

.then() = success
.catch() = failure


Promise.all() — The Trio Mission

Harry, Ron, Hermione → All must succeed.

Promise.all([harryTask, ronTask, hermioneTask])
  .then(results => console.log("Mission success!"))
  .catch(error => console.log("Mission failed!"));

Behavior:

  • ✅ ALL succeed → success

  • ❌ ONE fails → everything fails

Strict. No compromise.


Promise.allSettled() — Everyone Gets a Result

Even if someone fails, we still wait for all.

Promise.allSettled([harryTask, ronTask, hermioneTask])
  .then(results => console.log(results));

Analogy:

  • Harry passes

  • Ron fails

  • Hermione tops

Everyone still gets results.


Promise.race() — Triwizard Tournament

Whoever finishes first wins.

Promise.race([harryTask, cedricTask, fleurTask])
  .then(result => console.log("Winner:", result))
  .catch(error => console.log("Failed first:", error));

Behavior:

  • First success OR failure → decides everything

Promise.any() — One Hero Is Enough

Promise.any([harryTask, ronTask, hermioneTask])
  .then(result => console.log("Someone saved the day!"))
  .catch(() => console.log("All failed 😭"));

Analogy:

  • Harry fails ❌

  • Ron fails ❌

  • Hermione succeeds ✅

Mission still saved.


Final Summary

Method Meaning
.then() What happens after success
.catch() Handle failure
Promise.all() All must succeed
Promise.allSettled() Everyone finishes
Promise.race() First wins
Promise.any() One success is enough

Final Thought

Promises are not confusing.

You were just taught them in a boring way.

More from this blog

A

Ashish Jha · Dev

34 posts

A personal blog where I write simple and practical explanations about backend development, Git, JavaScript, and full-stack web development as I learn and build.