Vivasoft-logo

ডার্টে যেভাবে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং করেতে হয়

এখন আমরা দেখব ডার্টে কিভাবে অ্যাসিংক্রোনাস প্রোগ্রামিং ব্যাবহার করতে হয়। প্রথমে আমরা কিছু কীওয়ার্ডের সাথে পরিচিত হব। কীওয়ার্ড গুলা হচ্ছে async, await, then এবং catch. আমরা একে একে এদের ব্যাবহার দেখব এবং তাদের কনসেপ্ট বুঝার চেষ্টা করব। কিন্তু তার আগে Future কি এটা আমারা একটু জেনে নিই, কেননা কীওয়ার্ডের আলোচনায় এটার ব্যাবহার আমরা দেখতে পাব। ডার্টে ফিউচার রিপ্রেসেন্ট করে কোন পটেনশিয়াল ভ্যালু অথবা error যেটা কোন এক সময় এভাইলাবল হবে। এটাকে অ্যাসিংক্রোনাস প্রোগ্রামিঙের রেসাল্টও বলা হয়ে থাকে। এর তিনটি স্টেট রয়েছে। স্টেট গুলি হচ্ছে Uncompleted, Completed with a Value, Completed with an Error . নামকরন দেখে অনেকটা বোঝা যাচ্ছে তারা আসলে কি বোঝায়, যেমন Uncompleted বোঝায় ফিউচার এখনও সম্পূর্ণ হয় নি। Completed with a Value বোঝায় ফিউচার সম্পূর্ণ হয়েছে এবং এটি ভ্যালু ধারন করে। অনুরুপভাবে Completed with an error বোঝায় ফিউচার error নিয়ে সম্পূর্ণ হয়েছে।

  • async

এই কীওয়ার্ড দিয়ে আমরা ডার্টকে বলি যে কখন অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং করব। নিচের ফাংশনে আমরা দেখতে পাই এখানে কিভাবে async কীওয়ার্ড ব্যাবহার করা হয়ছে। এখানে আমরা নন ব্লকিং কোড লিখতে পারব যেমন আমরা এর আগে বলেছি। async কীওয়ার্ড আসলে সম্পূর্ণ অ্যাসিংক্রোনাস প্রসেসের এর ফাউন্ডেশন করে দেয়।

Future fetchData() async {
 // Your asynchronous code goes here
}
 
  • await

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

Future fetchData() async {
 final response = await fetchFromAPI();
 // Process the response after it's available
}
 

এখানে await দিয়ে আমরা অ্যাসিংক্রোনাস কোডকে সিকুএন্সিয়াল এবং রিডেবল করতে পারতেসি। এটাকে এভাবে বলা যায় যে, হেই ডার্ট শুরতে ডাটা নিয়ে আস তারপরে আমরা অন্য কাজ করব।

  • then

মনে করি আমরা এখন এমন অবস্থায় আছি, যখন আমরা একটি ফিউচার শুরু করেসি এবং আমরা চাই এটা সম্পূর্ণ হওয়ার পরে আমরা কোন টাস্ক সম্পাদন করব। এখানে then কীওয়ার্ড এর ব্যাবহার আসে। then কীওয়ার্ড দিয়ে আমাদের ফিউচারে কলব্যাক এটাচ করতে দেয়, যে কলব্যাক ফিউচার সম্পূর্ণ হওয়ার পরে এক্সিকিউট হবে।

fetchData().then((data) {
 // Process the data when it's available
});
 

এই then মেথড আমাদের মাল্টিপল অ্যাসিংক্রোনাস অপেরেশন চেইন করতে দেয় এবং এটা নিশ্চিত করে আমরা যেভাবে চাচ্ছি সেভাবেই এক্সিকিউশন হচ্ছে। এভাবে ক্লিন কোড ও রিডেবল কোড লিখতে সাহায্য করে।

  • catch

সফটওয়্যার ডেভ্লপমেন্টে error খুবই কমন একটা ব্যাপার। এই error হ্যান্ডেলিং নিয়ে আমাদের খুব সতর্ক থাকতে হয়। ডার্ট অ্যাসিংক্রোনাস প্রোগ্রামিং এ error হ্যান্ডেলিং করতে catchError নামে একটি মেথড দিয়েছে। এর সাহায্যে আমরা যথাযথভাবে হ্যান্ডেল করতে পারি। নিচের উদাহরনের মত করে আমরা ফিউচারে catchError যোগ করতে পারি।

fetchData().then((data) {
 // Process the data when it's available
}).catchError((error) {
 // Handle errors gracefully
});
 

তাহলে এটা দেখা গেল catchError ব্যাবহার করে আমরা আনেক্সপেক্টেড কেস গুলি হ্যান্ডেল করতে পারব এবং অ্যাপ্লিকেশান ক্রাশ করবে না।

উপরে আমরা অ্যাসিংক্রোনাস প্রোগ্রামিং এবং ডার্টে কিভাবে এর ব্যাবহার হয় এটা দেখলাম। এখন আমরা কিছু এক্সাম্পল দেখব যাতে আমদের ধারনা আরও সঠিক হয়।