async
এবং await
জাভাস্ক্রিপ্টের এমন দুটি কিওয়ার্ড যা অ্যাসিঙ্ক্রোনাস কোড লেখার পদ্ধতিকে সহজ এবং পাঠযোগ্য করে তোলে। এই কিওয়ার্ডগুলো Promise
এর সাথে ব্যবহার করা হয় এবং এটি প্রমিসের ফলাফল পেতে then()
বা catch()
মেথডের পরিবর্তে সিনক্রোনাস কোডের মতো কাজ করতে সাহায্য করে।
async
কিওয়ার্ড একটি ফাংশনের আগে ব্যবহার করা হয়, যা সেই ফাংশনটিকে একটি প্রমিস রিটার্ন করতে বাধ্য করে। এটি একটি অপ্রত্যাশিত রিটার্ন ভ্যালু (যেমন একটি সিঙ্ক্রোনাস ফাংশনে আউটপুট) প্রত্যাশিত করতে সাহায্য করে।
async function fetchData() {
return "ডেটা ফেচ হয়েছে";
}
fetchData().then(function(result) {
console.log(result); // আউটপুট: ডেটা ফেচ হয়েছে
});
এখানে, fetchData()
একটি async
ফাংশন, যা একটি প্রমিস রিটার্ন করে, এবং .then()
ব্যবহার করে আমরা এর রেজাল্ট পেতে পারি।
await
কিওয়ার্ডটি শুধুমাত্র async
ফাংশনের মধ্যে ব্যবহার করা যেতে পারে। এটি একটি প্রমিসের ফলাফল পাওয়ার জন্য অপেক্ষা করে এবং প্রমিস সফলভাবে পূর্ণ হলে পরবর্তী কোডটি এক্সিকিউট হয়। এর মাধ্যমে আপনি প্রমিসের ফলাফল পেতে then()
ব্যবহারের তুলনায় কোডকে আরো পরিষ্কার এবং পাঠযোগ্য করতে পারেন।
async function fetchData() {
let result = await new Promise(resolve => {
setTimeout(() => {
resolve("ডেটা ফেচ হয়েছে");
}, 2000);
});
console.log(result); // আউটপুট: ডেটা ফেচ হয়েছে
}
fetchData();
এখানে, await
প্রমিসের ফলাফল পাওয়া না যাওয়া পর্যন্ত পরবর্তী কোড এক্সিকিউট হওয়ার আগে অপেক্ষা করে।
async
এবং await
ব্যবহার করলে প্রমিস হ্যান্ডলিং অনেক সহজ হয়ে যায়। এটি কোডকে আরও রিডেবল এবং মেইনটেইনেবল করে, কারণ এটি একাধিক .then()
বা .catch()
এর পরিবর্তে একটি সিনক্রোনাস অভ্যেসে কোড লেখা সম্ভব করে।
async
ফাংশনের মধ্যে try/catch
ব্লক ব্যবহার করে ত্রুটি হ্যান্ডলিংও করা যায়। এটি কোডের মধ্যে ত্রুটি ঘটলে সহজে তাকে ক্যাচ করতে সাহায্য করে।
async function fetchData() {
try {
let result = await new Promise((resolve, reject) => {
let success = false;
if (success) {
resolve("ডেটা ফেচ হয়েছে");
} else {
reject("ডেটা ফেচ করতে সমস্যা হয়েছে");
}
});
console.log(result);
} catch (error) {
console.log(error); // আউটপুট: ডেটা ফেচ করতে সমস্যা হয়েছে
}
}
fetchData();
এখানে try/catch
ব্লক ব্যবহার করে ত্রুটি হ্যান্ডল করা হয়েছে।
একাধিক অ্যাসিঙ্ক ফাংশন একের পর এক এক্সিকিউট করতে হলে, await
ব্যবহার করা যায়। তবে যদি আপনি একাধিক অ্যাসিঙ্ক ফাংশন একসাথে চালাতে চান এবং ফলাফল পেতে চান, তাহলে Promise.all()
ব্যবহার করা উচিত।
async function fetchData1() {
return "ডেটা ১ ফেচ হয়েছে";
}
async function fetchData2() {
return "ডেটা ২ ফেচ হয়েছে";
}
async function fetchData() {
let result1 = await fetchData1();
let result2 = await fetchData2();
console.log(result1); // আউটপুট: ডেটা ১ ফেচ হয়েছে
console.log(result2); // আউটপুট: ডেটা ২ ফেচ হয়েছে
}
fetchData();
এখানে, প্রথম fetchData1()
এবং পরে fetchData2()
ফাংশনগুলো একের পর এক এক্সিকিউট হয়।
Promise.all()
দিয়ে:async function fetchData1() {
return "ডেটা ১ ফেচ হয়েছে";
}
async function fetchData2() {
return "ডেটা ২ ফেচ হয়েছে";
}
async function fetchAllData() {
let results = await Promise.all([fetchData1(), fetchData2()]);
console.log(results); // আউটপুট: [ 'ডেটা ১ ফেচ হয়েছে', 'ডেটা ২ ফেচ হয়েছে' ]
}
fetchAllData();
এখানে, Promise.all()
দুটি অ্যাসিঙ্ক ফাংশন একসাথে চালিয়ে তাদের ফলাফল পাওয়া হয়েছে।
async
এবং await
জাভাস্ক্রিপ্টে অ্যাসিঙ্ক্রোনাস কোড লেখার একটি আধুনিক এবং সহজ উপায়। async
ফাংশন একটি প্রমিস রিটার্ন করে এবং await
কিওয়ার্ডটি প্রমিসের ফলাফল পাওয়ার জন্য অপেক্ষা করে, যা কোডের পাঠযোগ্যতা উন্নত করে। এটি try/catch
ব্লক দ্বারা ত্রুটি হ্যান্ডলিং করতে সাহায্য করে এবং একাধিক অ্যাসিঙ্ক ফাংশন সহজে একত্রে চালাতে সাহায্য করে।
common.read_more