Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Async Deep Dive
  5. Q42. What is Promise.all(), Promise.allSettled(), Promise.race(), and Promise.any()?
JavaScriptAsync Deep Dive

Q42. What is Promise.all(), Promise.allSettled(), Promise.race(), and Promise.any()?

চারটি Promise combinator কখন কীভাবে ফল দেয় — একটি তুলনা ছকাটি সহ।

এই চারটি method-ই একসাথে অনেক Promise নিয়ে কাজ করে, কিন্তু কখন সফল হয় আর ফলে কী ফেরত দেয় সেটা আলাদা। মনে রাখার সহজ উপায় হলো তিনটি প্রশ্নের উত্তর দেওয়া — সব সফল হলে কী হবে, একটা ব্যর্থ হলে কী হবে, আর সব ব্যর্থ হলে কী হবে।

প্রস্তুতি — সব সফলjavascript
javascript
const delay = (ms, value) =>
  new Promise((resolve) => setTimeout(() => resolve(value), ms));

const p1 = delay(100, "এক");
const p2 = delay(200, "দুই");
const p3 = delay(50, "তিন");
Promise.alljavascript
javascript
// Promise.all — সব সফল হলে চলে, একটা fail করলেই থেমে যায়
Promise.all([p1, p2, p3]).then((values) => {
  console.log(values); // ["এক", "দুই", "তিন"] — input-এর ক্রমে
});

// একটা fail করলে সব fail
Promise.all([p1, Promise.reject(new Error("ব্যর্থ")), p3])
  .catch((error) => console.log(error.message)); // "ব্যর্থ"
Promise.allSettledjavascript
javascript
// Promise.allSettled — সব শেষ হওয়া পর্যন্ত অপেক্ষা, কখনো fail হয় না
Promise.allSettled([p1, Promise.reject(new Error("ব্যর্থ")), p3])
  .then((results) => {
    console.log(results);
    // [
    //   { status: "fulfilled", value: "এক" },
    //   { status: "rejected",  reason: Error("ব্যর্থ") },
    //   { status: "fulfilled", value: "তিন" },
    // ]
  });
Promise.racejavascript
javascript
// Promise.race — যেটা আগে শেষ হয় সেটাই জেতে, হ্যাঁ হোক বা না
Promise.race([p1, p2, p3]).then((value) => {
  console.log(value); // "তিন" — ৫০ms-এই শেষ, অন্যগুলো অপেক্ষায়
});

// fail করা দ্রুত Promise জিতে যায়
Promise.race([p1, delay(20, Promise.reject(new Error("দ্রুত fail")))])
  .catch((error) => console.log(error.message)); // "দ্রুত fail"
Promise.anyjavascript
javascript
// Promise.any — প্রথম সফল হলেই জেতে, সব fail হলে ধরে
Promise.any([
  Promise.reject(new Error("প্রথমটি ব্যর্থ")),
  p2,
  p3,
]).then((value) => {
  console.log(value); // "তিন" — প্রথম fulfilled
});

// সব ব্যর্থ হলে AggregateError
Promise.any([
  Promise.reject(new Error("১")),
  Promise.reject(new Error("২")),
]).catch((error) => {
  console.log(error.name);         // "AggregateError"
  console.log(error.errors.length); // 2 — সব error পাওয়া যায়
});

ধাপে ধাপে — p3 মাত্র ৫০ms-এ শেষ হয়, তাই Promise.race-এ ও Promise.any-এ সেটিই আগে ফেরত আসে। কিন্তু Promise.all ও Promise.allSettled তিনটির জন্যই অপেক্ষা করে, তাই সব ফল একসাথে পাওয়া যায়।

বাস্তব ব্যবহারjavascript
javascript
// বাস্তব উদাহরণ — একসাথে ৩টি API call
function loadDashboard() {
  return Promise.all([
    fetchUser(),
    fetchOrders(),
    fetchMessages(),
  ]).then(([user, orders, messages]) => {
    return { user, orders, messages };
  });
}
fail হলেও বাকিরা দেখানোjavascript
javascript
// সব ফল দেখাতে চাইলে allSettled
function loadDashboardSafe() {
  return Promise.allSettled([
    fetchUser(),
    fetchOrders(),
    fetchMessages(),
  ]).then((results) => {
    const [user, orders, messages] = results.map((result) => {
      if (result.status === "fulfilled") return result.value;

      return null; // fail হলেও যেন বাকিরা দেখা যায়
    });

    return { user, orders, messages };
  });
}
timeout তৈরিjavascript
javascript
// race — timeout বানাতে খুব কাজে লাগে
function withTimeout(promise, ms) {
  const timeout = new Promise((_, reject) => {
    setTimeout(() => reject(new Error("সময় শেষ")), ms);
  });

  return Promise.race([promise, timeout]);
}

withTimeout(fetchSlowData(), 3000)
  .then((data) => console.log(data))
  .catch((error) => console.log(error.message)); // "সময় শেষ"

শেষ output-এ fetchSlowData ৩ সেকেন্ডের বেশি সময় নেয় বলে ধরা হলো। race দুটি Promise-এর মধ্যে যেটা আগে শেষ হবে সেটি ফেরত দেয়, তাই timeout-এর Promise হেরে গিয়ে reject হয় এবং catch ধরা পড়ে।

Methodশেষ হওয়ার নিয়মব্যর্থ হলেফেরত দেয়
allসব সফল হলেএকটা fail করলেই থামেমানের array
allSettledসব শেষ হলেকখনো হয় নাstatus-সহ object array
raceযেটা আগে শেষ হয়fail হলেও ফেরত দেয়প্রথমের মান বা error
anyপ্রথম সফল হলেসব fail হলেপ্রথম সফলের মান
মজার তথ্য

Promise.race ও Promise.any একই মনে হলেও উল্টো কাজ করে — race-এ যেকোনো একটি আগে শেষ হলেই ফল দেয়, আর any-তে শুধু সফল হওয়াটা ধরে। তাই race-এ timeout দিলে timeout-এর reject-ই জিতে যায়, কিন্তু any-তে সব ব্যর্থ হলেই AggregateError আসে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Async Deep Dive বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com