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. Advanced
  5. Q22. Explain how Promises work in JavaScript.
JavaScriptAdvanced

Q22. Explain how Promises work in JavaScript.

Promise-এর তিনটি state, then/catch/finally চেইন এবং একসাথে কয়েকটি কাজ সম্পন্ন করা।

Promise হলো ভবিষ্যতে কোনো ফলাফল পাওয়া যাবে কি না তার প্রতিশ্রুতি — এখনই ফল না পেয়েও ফল আসলে জানার ব্যবস্থা। এটির তিনটি state আছে: pending (চলছে), fulfilled (সফল) আর rejected (ব্যর্থ)।

Promise তৈরিjavascript
javascript
const promise = new Promise(function (resolve, reject) {
  setTimeout(function () {
    resolve("সফল");
  }, 1000);
});

promise.then(function (value) {
  console.log(value); // "সফল"
});

ধাপে ধাপে — new Promise চালানোর সঙ্গে সঙ্গে state pending হয়। এক সেকেন্ড পর timer শেষ হয়ে resolve ডাকে, তখন Promise fulfilled হয় এবং .then-এর ভিতরের কোড চলে।

ফলাফল পেতে .then(), ভুল ধরতে .catch(), আর যেকোনো অবস্থায় কিছু করতে .finally() ব্যবহার হয়।

then, catch ও finallyjavascript
javascript
fetch("/api/user")
  .then(function (res) {
    return res.json();
  })
  .then(function (user) {
    console.log(user.name);
  })
  .catch(function (error) {
    console.error("সমস্যা:", error.message);
  })
  .finally(function () {
    console.log("সবসময় চলবে");
  });

Chaining-এর মূল কথা — প্রতিটি then যে মান ফেরত দেয়, সেটাই পরের then-এর ইনপুট হয়। তাই একটা সাফল্য কিছু ফিরিয়ে দিলে সেটা পরের ধাপে চলে যায়।

return ভুলে গেলেjavascript
javascript
// return না দিলে চেইন ভেঙে যায়
fetch("/api/user")
  .then(function (res) {
    res.json(); // return নেই!
  })
  .then(function (user) {
    console.log(user); // undefined
  });

একসাথে অনেক কাজ শেষ হওয়া পর্যন্ত অপেক্ষা করার জন্য Promise.all, আর কোনো একটা ব্যর্থ হলেই থামতে Promise.allSettled, Promise.race ও Promise.any ব্যবহার হয়।

একাধিক Promisejavascript
javascript
// সব ফলাফলের অপেক্ষায়
Promise.all([getUser(), getPosts()]).then(function (results) {
  console.log(results[0], results[1]);
});

// যেকোনো একটা ব্যর্থ হলেই থামে
Promise.race([timeout(3000), save()]).catch(function () {
  console.log("সময় শেষ");
});

// সবগুলোর ফলাফল চায়, ব্যর্থ হলেও
Promise.allSettled([a(), b()]).then(function (results) {
  console.log(results.map(function (r) { return r.status; }));
});
Methodফলাফল
Promise.allসবগুলো সফল হলে ফলাফল, একটা ব্যর্থ হলে reject
Promise.allSettledসবগুলো শেষ হলে সফল ও ব্যর্থ দুটোর তালিকা
Promise.raceযেটা আগে শেষ হয়, সেটাই
Promise.anyযেটা আগে সফল হয়, সেটাই
সতর্কতা

Promise তৈরি করার পর সাথে সাথে .then বা .catch জুড়ে দিতে হবে — নাহলে ভুল ঘটলে সেটা ধরা পড়ে না এবং unhandled rejection দেখা যায়।

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

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

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

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

mdanamolhasan1998@gmail.com