Promises হল JavaScript-এর একটি শক্তিশালী বৈশিষ্ট্য যা অ্যাসিঙ্ক্রোনাস কোড পরিচালনা করতে ব্যবহৃত হয়। CoffeeScript-এও আপনি সহজেই Promises ব্যবহার করতে পারেন, এবং এটি JavaScript-এ Promises ব্যবহারের মতোই কাজ করে। এখানে CoffeeScript-এ Promises-এর সাথে কাজ করার প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হলো।
Promise কী?
Promise হল একটি অ্যাসিঙ্ক্রোনাস অপারেশন যা ভবিষ্যতে একটি মান প্রদান করবে (বা ত্রুটি ঘটলে তা ক্যাচ করবে)। এটি তিনটি অবস্থায় থাকতে পারে:
- Pending (অপেক্ষমাণ): Promise এখনও সম্পূর্ণ হয়নি।
- Fulfilled (সম্পূর্ণ): Promise সফলভাবে সম্পন্ন হয়েছে।
- Rejected (প্রত্যাখ্যানিত): Promise ব্যর্থ হয়েছে।
CoffeeScript-এ Promise ব্যবহার
CoffeeScript-এ Promise ব্যবহার করার জন্য JavaScript-এর মতো একই সিনট্যাক্স ব্যবহার করতে হয়। CoffeeScript কোডটি আরও সংক্ষিপ্ত হয়, তবে Promise-এর মৌলিক কার্যকলাপ একই থাকে।
উদাহরণ: একটি Promise তৈরি করা
promise = new Promise (resolve, reject) ->
# কিছু অ্যাসিঙ্ক্রোনাস কাজ
if success
resolve "Operation successful!"
else
reject "Operation failed!"
এখানে, new Promise ব্যবহার করে একটি নতুন Promise তৈরি করা হয়েছে। resolve এবং reject হল ফাংশন যা Promise-এর স্টেট পরিবর্তন করতে ব্যবহৃত হয়।
JavaScript-এ কম্পাইল হওয়া কোড:
var promise;
promise = new Promise(function(resolve, reject) {
// কিছু অ্যাসিঙ্ক্রোনাস কাজ
if (success) {
resolve("Operation successful!");
} else {
reject("Operation failed!");
}
});
Promise এর then এবং catch ব্যবহার
Promise পূর্ণ হলে বা ব্যর্থ হলে .then() এবং .catch() মেথড ব্যবহার করে সেই ফলাফলটি হ্যান্ডেল করা হয়।
উদাহরণ: .then() এবং .catch() ব্যবহার করা
promise = new Promise (resolve, reject) ->
# কিছু অ্যাসিঙ্ক্রোনাস কাজ
if success
resolve "Operation successful!"
else
reject "Operation failed!"
promise.then (result) ->
console.log result # "Operation successful!" যদি Promise সফল হয়
.catch (error) ->
console.log error # "Operation failed!" যদি Promise ব্যর্থ হয়
এখানে:
.then()মেথড Promise সফল হলে কল হবে এবং সফল ফলাফল পাবে।.catch()মেথড Promise ব্যর্থ হলে কল হবে এবং ত্রুটির বার্তা পাবে।
JavaScript-এ কম্পাইল হওয়া কোড:
var promise;
promise = new Promise(function(resolve, reject) {
// কিছু অ্যাসিঙ্ক্রোনাস কাজ
if (success) {
resolve("Operation successful!");
} else {
reject("Operation failed!");
}
});
promise.then(function(result) {
return console.log(result); // "Operation successful!" যদি Promise সফল হয়
}).catch(function(error) {
return console.log(error); // "Operation failed!" যদি Promise ব্যর্থ হয়
});
Multiple Promises: Promise.all() এবং Promise.race()
যখন একাধিক Promise একসাথে পরিচালনা করতে হয়, তখন Promise.all() এবং Promise.race() ব্যবহৃত হয়।
১. Promise.all() – সব Promise সফল হলে then কল হয়
Promise.all() একাধিক Promise গ্রহণ করে এবং তাদের সবগুলো সফল হলে একটি একক .then() কল করে।
promise1 = new Promise (resolve) -> resolve "First promise"
promise2 = new Promise (resolve) -> resolve "Second promise"
Promise.all([promise1, promise2]).then (results) ->
console.log results # ["First promise", "Second promise"]
২. Promise.race() – প্রথমে যে Promise সম্পন্ন হবে, সেই Promise এর রেজাল্ট পাবে
Promise.race() একাধিক Promise গ্রহণ করে এবং প্রথম যে Promise সম্পন্ন হবে তার রেজাল্ট পায়।
promise1 = new Promise (resolve, reject) ->
setTimeout resolve, 100, "First promise completed"
promise2 = new Promise (resolve, reject) ->
setTimeout resolve, 200, "Second promise completed"
Promise.race([promise1, promise2]).then (result) ->
console.log result # "First promise completed"
এখানে, promise1 এবং promise2 একসাথে চলে, কিন্তু যেহেতু promise1 প্রথমে সম্পন্ন হচ্ছে, তাই Promise.race() তার রেজাল্ট প্রথমে পাবে।
CoffeeScript-এ Async/Await ব্যবহার করা
CoffeeScript-এ async এবং await ব্যবহার করে অ্যাসিঙ্ক্রোনাস কোড লেখার পদ্ধতি আরও সহজ এবং পরিষ্কার হয়।
উদাহরণ: async এবং await ব্যবহার করা
async fetchData = ->
try
result = await someAsyncFunction()
console.log result
catch error
console.log error
fetchData()
এখানে async ফাংশনটি Promise রিটার্ন করে এবং await ব্যবহার করে অ্যাসিঙ্ক্রোনাস কাজের ফলাফল পাওয়া হয়। যদি কোন ত্রুটি ঘটে তবে তা catch ব্লকে ধরা হয়।
JavaScript-এ কম্পাইল হওয়া কোড:
var fetchData;
fetchData = async function() {
try {
var result;
result = await someAsyncFunction();
console.log(result);
} catch (error) {
console.log(error);
}
};
fetchData();
সারাংশ
- Promises CoffeeScript-এ JavaScript-এর মতো কাজ করে, তবে এটি আরও সোজা এবং সংক্ষিপ্ত।
.then()এবং.catch()Promise-এর সফলতা বা ব্যর্থতার উপর নির্ভর করে ফলাফল হ্যান্ডেল করে।Promise.all()এবংPromise.race()একাধিক Promise পরিচালনার জন্য ব্যবহৃত হয়।asyncএবংawaitCoffeeScript-এ অ্যাসিঙ্ক্রোনাস কোড লেখার জন্য আরও সহজ পদ্ধতি প্রদান করে।
CoffeeScript এবং Promises একসাথে ব্যবহার করলে অ্যাসিঙ্ক্রোনাস কাজ খুবই সহজ এবং পরিষ্কারভাবে করা যায়।
Read more