Advanced13 min read

Promises

A asynchronous javascript concept every JavaScript developer should master.

Introduction

Promises is a core part of Asynchronous JavaScript in JavaScript. This lesson explains what it is, how the language actually implements it, and the patterns and pitfalls that separate copy-paste usage from real understanding. Read the code example, then use the takeaways to lock it in.

Why it exists

Promises exists to solve a concrete problem in day-to-day JavaScript. Understanding why it was added — the sharp edge or repetitive pattern it removes — is what lets you recognize the moment it's the right tool instead of reaching for it out of habit.

Analogy

Think of Promises as one clearly-shaped tool in your JavaScript toolbox: powerful when the problem matches its shape, awkward when forced. The skill is recognizing the fit quickly.

How it works

Under the hood, Promises follows rules the engine applies consistently. Learn those rules once — what the language evaluates, in what order, and what it captures or copies — and the surprising cases stop being surprising.

In code

TypeScriptCreating and chaining a Promise
function delay(ms: number) {
  return new Promise<void>((resolve) => setTimeout(resolve, ms))
}

delay(200)
  .then(() => fetch("/api/user"))
  .then((r) => r.json())
  .catch((err) => console.error(err))

When to use it

Reach for it when

  • The problem clearly matches what Promises is designed for.
  • Using Promises makes the code more readable, not just shorter.
  • You understand the rule well enough to predict the output.

Avoid it when

  • A simpler, more obvious construct expresses the same intent.
  • Using Promises would hide behavior your teammates have to guess at.

Trade-offs

Advantages

  • Expresses a common JavaScript pattern clearly and idiomatically.
  • Reduces boilerplate and a whole class of manual bugs.

Disadvantages

  • Misused, Promises hides behavior and creates subtle bugs.
  • Its edge cases must be understood, not memorized.

Like every language feature, Promises trades one kind of clarity for another. Reach for it when it makes intent obvious, and skip it when a plainer construct reads better.

Common mistakes

Watch out for

  • Using Promises without understanding what the engine actually does.
  • Copying a snippet and assuming the edge cases match your situation.

Think like a senior

Senior Engineer Insight

Senior developers can explain Promises in terms of the language rules — evaluation order, references vs copies, sync vs async — not just usage.

Senior Engineer Insight

They know the edge cases of Promises and write code that a teammate can read without running it.

Remember

Promises follows consistent rules — learn the rule, not just the syntax.

Remember

Readable beats clever: use Promises when it clarifies intent.

Summary

Promises is a asynchronous javascript building block in JavaScript. Know the rule the engine applies, the common pitfalls, and when a simpler alternative reads better.

Key takeaways

  • Promises solves a specific, recurring JavaScript problem.
  • The behavior follows predictable engine rules.
  • Prefer readability over cleverness when you apply it.

Your notes

Saved to this device