async এবং await এর ব্যবহার

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

282

async এবং await ES6 এর দুটি গুরুত্বপূর্ণ ফিচার যা অ্যাসিনক্রোনাস কোডকে সিঙ্ক্রোনাস কোডের মতো সহজে পড়া এবং ব্যবস্থাপনা করতে সহায়তা করে। এগুলি Promises এর উপর ভিত্তি করে কাজ করে, কিন্তু আরও পরিষ্কার এবং সহজ সিনট্যাক্স প্রদান করে।


async কিওয়ার্ড

async কিওয়ার্ড একটি ফাংশনকে অ্যাসিনক্রোনাস হিসেবে চিহ্নিত করে, অর্থাৎ সেই ফাংশনটি Promise রিটার্ন করবে। একটি async ফাংশনের মধ্যে থাকা কোড ব্লক আসলে সিঙ্ক্রোনাস এবং তা ধারাবাহিকভাবে এক্সিকিউট হয়, তবে এটি আসলে Promises এর মাধ্যমে কাজ করে।

উদাহরণ:

async function fetchData() {
  return "Data fetched";
}

fetchData().then(result => {
  console.log(result);  // "Data fetched"
});

এখানে fetchData() ফাংশনটি একটি Promise রিটার্ন করবে, এবং এটি একটি অ্যাসিনক্রোনাস ফাংশন হিসেবে কাজ করবে।


await কিওয়ার্ড

await কিওয়ার্ডকে শুধুমাত্র async ফাংশনের মধ্যে ব্যবহার করা যায়। এটি একটি Promise এর ফলাফল পাওয়ার জন্য অপেক্ষা করতে বলে। যখন await ব্যবহৃত হয়, তখন ফাংশনটি ওই Promise এর রেজাল্ট পাওয়ার পরই পরবর্তী কোড এক্সিকিউট করবে।

উদাহরণ:

async function fetchData() {
  let data = await Promise.resolve("Data fetched");
  console.log(data);  // "Data fetched"
}

fetchData();

এখানে, await Promise এর রেজাল্টের জন্য অপেক্ষা করছে এবং তারপর রেজাল্টটি কনসোল লগে প্রদর্শিত হচ্ছে।


async এবং await এর সুবিধা

  1. কোড পড়তে সহজ: async এবং await ব্যবহার করার ফলে অ্যাসিনক্রোনাস কোড সিঙ্ক্রোনাস কোডের মতো দেখতে হয়, যা কোডের রিডেবিলিটি (readability) এবং ডিবাগিংকে সহজ করে তোলে।
  2. Promises থেকে সহজে কাজ: async এবং await ব্যবহার করে আপনি Promises এর সাথে কাজ করতে পারবেন অনেক সহজে। অতিরিক্ত .then() এবং .catch() ব্যবহারের প্রয়োজন নেই।
  3. এরর হ্যান্ডলিং: async এবং await এর সাথে try...catch ব্লক ব্যবহার করে সহজে ত্রুটি (error) হ্যান্ডল করা যায়।

এরর হ্যান্ডলিং with try...catch

async এবং await এর সাথে try...catch ব্যবহার করা হয় যাতে অ্যাসিনক্রোনাস অপারেশনগুলোর ত্রুটি (error) সহজে হ্যান্ডল করা যায়।

উদাহরণ:

async function fetchData() {
  try {
    let data = await Promise.reject("Error occurred");
    console.log(data);  // Won't be executed
  } catch (error) {
    console.log(error);  // "Error occurred"
  }
}

fetchData();

এখানে, Promise.reject() ব্যবহার করা হয়েছে, যা একটি rejected Promise রিটার্ন করে। await অপেক্ষা করবে এবং ত্রুটি ঘটলে সেটি catch ব্লকে ধরা হবে।


Multiple Await (একাধিক await)

একাধিক await ব্যবহার করে আপনি একাধিক অ্যাসিনক্রোনাস অপারেশনকে সিকোয়েন্সিয়ালি (sequentially) এক্সিকিউট করতে পারেন।

উদাহরণ:

async function fetchData() {
  let data1 = await Promise.resolve("Data 1");
  console.log(data1);  // "Data 1"

  let data2 = await Promise.resolve("Data 2");
  console.log(data2);  // "Data 2"
}

fetchData();

এখানে, প্রথমে data1 রিজল্ট পাওয়ার পরই data2 রিজল্ট পাওয়া যাবে।


Parallel Execution with Promise.all

যদি আপনি একাধিক অ্যাসিনক্রোনাস অপারেশনকে একসাথে (parallel) এক্সিকিউট করতে চান, তবে Promise.all() ব্যবহার করতে পারেন। এটি একাধিক Promise কে একসাথে রান করিয়ে, সমস্ত Promise সফলভাবে শেষ হওয়ার পর তাদের রেজাল্ট ফেরত দেয়।

উদাহরণ:

async function fetchData() {
  const result = await Promise.all([
    Promise.resolve("Data 1"),
    Promise.resolve("Data 2"),
    Promise.resolve("Data 3")
  ]);
  
  console.log(result);  // ["Data 1", "Data 2", "Data 3"]
}

fetchData();

এখানে, সব Promise একসাথে রান হচ্ছে এবং await ব্যবহার করে তাদের রেজাল্ট একসাথে পাওয়া যাচ্ছে।


async এবং await এর মাধ্যমে কোড সহজ এবং পরিষ্কার হয়, বিশেষত যখন আপনি নেটওয়ার্ক কল, ডেটা ফেচিং, টাইমআউট অথবা অন্যান্য অ্যাসিনক্রোনাস অপারেশন পরিচালনা করছেন। এর মাধ্যমে কোডের লজিক সহজে বুঝতে ও ডিবাগ করতে পারবেন, এবং এটি অ্যাসিনক্রোনাস কোডের সাথে কাজ করা আরও সরল করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...