.then() এবং .catch() এর ব্যবহার

Promises - জাভাস্ক্রিপ্ট ইএস৬ (ES6) - Web Development

313

ES6-এ Promises একটি গুরুত্বপূর্ণ নতুন ফিচার হিসেবে পরিচিত। Promise হল একটি অবজেক্ট যা আসন্ন মান বা ফলাফলকে প্রতিশ্রুতি দেয় এবং এটি সফলভাবে সম্পন্ন হলে .then() মেথড ব্যবহার করে রেজাল্ট পাওয়া যায়। আর যদি কোনো ত্রুটি ঘটে, তাহলে .catch() মেথড ব্যবহার করে ত্রুটির হ্যান্ডলিং করা হয়। এই ফিচারটি অ্যাসিনক্রোনাস কোড লেখাকে অনেক সহজ এবং পরিষ্কার করে তোলে।


1. Promise কী?

একটি Promise হলো একটি অবজেক্ট যা একটি ভবিষ্যত মান বা ত্রুটি ফিরে আসার প্রতিশ্রুতি দেয়। Promise এর তিনটি সম্ভবত অবস্থা থাকে:

  • Pending: Promise এখনও শেষ হয়নি, এবং এটি কোন ফলাফল দেয়নি।
  • Fulfilled: Promise সফলভাবে সম্পন্ন হয়েছে এবং একটি মান (value) প্রদান করেছে।
  • Rejected: Promise-এ কোনো ত্রুটি ঘটেছে এবং এটি একটি ত্রুটি (error) প্রদান করেছে।

2. .then() মেথড

.then() মেথডটি Promise সফলভাবে সম্পন্ন হলে কল করা হয়। এটি একটি callback function নেয়, যা Promise Fulfilled হওয়ার পর চলবে। .then() একটি নতুন Promise ফেরত দেয়, যার ফলে চেইনিং (chaining) করা যায়।

উদাহরণ:

let promise = new Promise((resolve, reject) => {
  let success = true;
  if (success) {
    resolve("Promise is resolved!");
  } else {
    reject("Promise is rejected!");
  }
});

promise.then((result) => {
  console.log(result);  // "Promise is resolved!"
});

এখানে, Promise সফল হলে .then() মেথডে কল করা হবে এবং "Promise is resolved!" প্রিন্ট হবে।


3. .catch() মেথড

.catch() মেথডটি Promise-এ যদি কোনো ত্রুটি ঘটে, তাহলে কল করা হয়। এটি reject() দ্বারা রিটার্ন হওয়া ত্রুটিকে হ্যান্ডেল করে। .catch() একটি একক callback function নেয়, যা Promise Rejected হলে চলবে।

উদাহরণ:

let promise = new Promise((resolve, reject) => {
  let success = false;
  if (success) {
    resolve("Promise is resolved!");
  } else {
    reject("Promise is rejected!");
  }
});

promise.then((result) => {
  console.log(result);  // এটি চলবে না, কারণ promise.reject() হয়েছে।
}).catch((error) => {
  console.log(error);   // "Promise is rejected!"
});

এখানে, .catch() Promise রিজেক্ট হওয়ার পর "Promise is rejected!" প্রিন্ট করবে।


4. .then() এবং .catch() চেইনিং

.then() এবং .catch() মেথড চেইনিং এর মাধ্যমে একাধিক অ্যাসিনক্রোনাস অপারেশন সিকোয়েন্স আকারে বাস্তবায়িত করা যেতে পারে। .then() এর মধ্যে পরবর্তী Promise রিটার্ন করা যায় এবং .catch() মেথডটি পুরো চেইনটি হ্যান্ডেল করতে পারে।

উদাহরণ:

let promise = new Promise((resolve, reject) => {
  let success = true;
  if (success) {
    resolve("Step 1: Success");
  } else {
    reject("Step 1: Failed");
  }
});

promise
  .then((result) => {
    console.log(result);  // "Step 1: Success"
    return "Step 2: Success";  // Next promise
  })
  .then((result) => {
    console.log(result);  // "Step 2: Success"
    return "Step 3: Success";  // Next promise
  })
  .catch((error) => {
    console.log(error);  // যদি কোনো ত্রুটি হয়, এখানে হ্যান্ডেল হবে
  });

এখানে, প্রথম Promise সফল হলে পরবর্তী Promise গুলি চেইন করা হবে এবং একে একে তাদের ফলাফল প্রিন্ট হবে। যদি কোথাও কোনো ত্রুটি ঘটে, তবে .catch() মেথড সেটি হ্যান্ডল করবে।


5. .finally() মেথড

.finally() একটি নতুন ফিচার যা ES8 (ECMAScript 2017)-এ এসেছিল, তবে এটি Promise চেইনে .then() এবং .catch() মেথডের পরে কল করা যায়। এটি Promise Fulfilled বা Rejected হওয়া সত্ত্বেও চূড়ান্ত কিছু কার্যকলাপ সম্পন্ন করতে ব্যবহৃত হয়।

উদাহরণ:

let promise = new Promise((resolve, reject) => {
  let success = true;
  if (success) {
    resolve("Promise is resolved!");
  } else {
    reject("Promise is rejected!");
  }
});

promise
  .then((result) => {
    console.log(result);  // "Promise is resolved!"
  })
  .catch((error) => {
    console.log(error);   // যদি ত্রুটি হয়
  })
  .finally(() => {
    console.log("The promise is complete.");
  });

এখানে, চূড়ান্ত স্টেটমেন্ট .finally() এর মাধ্যমে প্রিন্ট হবে, যা Promise Fulfilled বা Rejected হওয়া সত্ত্বেও চলে আসবে।


উপসংহার

ES6-এ .then() এবং .catch() মেথড Promise-এর সাথে কাজ করার জন্য ব্যবহৃত হয় এবং অ্যাসিনক্রোনাস কোড পরিচালনা সহজ করে তোলে। .then() সফল ফলাফলকে হ্যান্ডল করতে এবং .catch() ত্রুটি হ্যান্ডল করতে ব্যবহৃত হয়। চেইনিং এবং .finally() মেথডের মাধ্যমে আরো কার্যকর এবং পরিষ্কার কোড লেখা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...