জাভাস্ক্রিপ্টে অ্যাসিনক্রোনাস কোড লিখা একসময় খুব কঠিন ছিল। কলব্যাক ফাংশনের একাধিক লেভেলে কোড লিখতে হতো, যা পড়তে এবং বুঝতে কঠিন হতো। ES6-এ প্রমিস (Promise) আসার পর অ্যাসিনক্রোনাস কোড লিখা অনেক সহজ ও পরিষ্কার হয়েছে।
প্রমিস (Promise) কী?
প্রমিস একটি অবজেক্ট যা ভবিষ্যতে একটি প্রতিক্রিয়া (response) রিটার্ন করার গ্যারান্টি দেয়। বাস্তব জীবনের প্রমিসের মতো: আপনি বলেন ভবিষ্যতে কিছু করবেন, এখন করবেন না। প্রমিস তিনটি অবস্থায় থাকতে পারে:
- Pending: এখনো সম্পন্ন হয়নি।
- Fulfilled (Resolved): সফলভাবে সম্পন্ন হয়েছে।
- Rejected: ব্যর্থ হয়েছে।
প্রমিস তৈরি হলে এটি পেন্ডিং অবস্থায় থাকে। প্রতিক্রিয়া আসার পর এটি إما রিজলভড (fulfilled) হয় অথবা রিজেক্টেড।
প্রমিস তৈরি করা
একটি প্রমিস তৈরি করতে new Promise কনস্ট্রাক্টর ব্যবহার করা হয়:
new Promise((resolve, reject) => {
// আপনার কোড
if (শর্ত_সফল) {
resolve(মান);
} else {
reject(এরর);
}
});
উদাহরণ: ৩ সেকেন্ড পর একটি নাম রিটার্ন করার প্রমিস।
let returnName = new Promise((resolve, reject) => {
let name;
setTimeout(() => {
name = "Cinnamon";
if (name === "Cinnamon") {
resolve(name);
} else {
reject("This promise has failed.");
}
}, 3000);
});
then(), catch() এবং finally()
প্রমিস কল করতে then() ব্যবহার করা হয় সফলতার জন্য, catch() ব্যর্থতার জন্য, এবং finally() সফল বা ব্যর্থ যেকোনো হলে চালানোর জন্য।
returnName
.then(data => { console.log(data); }) // সফল হলে
.catch(error => { console.log(error); }) // ব্যর্থ হলে
.finally(() => { console.log("Promise executed."); }); // সর্বদা
প্রমিস চেইনিং (Promise Chaining): একাধিক then() ব্যবহার করে ক্রমাগত অ্যাসিনক্রোনাস অপারেশন করা যায়।
returnName
.then(data => { console.log(data); })
.then(() => { console.log("This function is over!"); });
উপসংহার
জাভাস্ক্রিপ্ট প্রমিস অ্যাসিনক্রোনাস কোড লিখতে সাহায্য করে। এই গাইডে প্রমিসের মৌলিক বিষয়গুলো আলোচনা করা হয়েছে। নিজে প্রমিস লিখে অনুশীলন করুন। পরবর্তী ধাপ হিসেবে fetch() API দিয়ে ওয়েব রিকোয়েস্ট করে প্রমিসে লپیটানোর চ্যালেঞ্জ নিতে পারেন। async/awaitও প্রমিসের সাথে খুব ভালো কাজ করে।