Day 16

Promises

14 min
JavaScript 100 Days

JavaScript single-threaded hai — ek kaam ek waqt. Async operations (API calls, file read) ke liye Promises use karte hain taake baaki code ruka na rahe.

Promise kya hai?

Promise ek future value ka promise hai — ya fulfill hogi ya reject.

promise.js
javascript
// Promise banao
let myPromise = new Promise((resolve, reject) => {
  let success = true;

  if (success) {
    resolve("Data load ho gaya!");
  } else {
    reject("Kuch ghalat ho gaya!");
  }
});

// Promise use karo
myPromise
  .then(result => console.log("Success:", result))
  .catch(error => console.log("Error:", error))
  .finally(() => console.log("Always runs!"));

Promise Chaining

Multiple async operations sequence mein chalao.

chaining.js
javascript
function fetchUser(id) {
  return new Promise(resolve => {
    setTimeout(() => resolve({ id, name: "Zohaib" }), 1000);
  });
}

function fetchPosts(userId) {
  return new Promise(resolve => {
    setTimeout(() => resolve(["Post 1", "Post 2"]), 500);
  });
}

// Chain
fetchUser(1)
  .then(user => {
    console.log("User:", user.name);
    return fetchPosts(user.id);
  })
  .then(posts => {
    console.log("Posts:", posts);
  })
  .catch(err => console.log("Error:", err));

Promise.all — Parallel Run

Multiple promises ek saath chalao.

all.js
javascript
let p1 = fetch("https://api.example.com/users");
let p2 = fetch("https://api.example.com/posts");
let p3 = fetch("https://api.example.com/comments");

// Sab ek saath chalao
Promise.all([p1, p2, p3])
  .then(([users, posts, comments]) => {
    console.log("All loaded!");
  })
  .catch(err => console.log("One failed:", err));

🎯 Practice Challenge

2 second delay ke baad random number return karne wala Promise banao. .then() mein check karo ke even hai ya odd.