অ্যাসিনক্রোনাস জাভাস্ক্রিপ্ট (Asynchronous JavaScript) কি?
অ্যাসিনক্রোনাস জাভাস্ক্রিপ্ট হলো সেই পদ্ধতি যার মাধ্যমে আপনি একাধিক কাজ একে অপরকে বিরক্ত না করে, একযোগে সম্পাদন করতে পারেন। এটি সাধারণত ওয়েব অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয় যেখানে আপনি সার্ভার থেকে ডেটা আনার জন্য একটি অনুরোধ পাঠান এবং এই অনুরোধের সাড়া পাওয়ার জন্য অপেক্ষা না করে অন্য কাজ করতে পারেন। এর ফলে অ্যাপ্লিকেশনটি দ্রুত এবং আরও রেসপন্সিভ হয়।
অ্যাসিনক্রোনাস জাভাস্ক্রিপ্টের অন্যতম প্রধান বৈশিষ্ট্য হলো, এটি কার্যকারিতার ক্ষেত্রে নন-ব্লকিং। অর্থাৎ, যখন একটি অ্যাসিনক্রোনাস অপারেশন চলছে, তখন অন্যান্য অপারেশন চলতে থাকে, এবং অ্যাসিনক্রোনাস অপারেশনটি শেষ হলে তার ফলাফল ব্যবহার করা হয়।
Promises কি?
Promises হল একটি অ্যাসিনক্রোনাস অপারেশনের ফলাফল বা ত্রুটি যা ভবিষ্যতে পাওয়া যাবে। যখন একটি অ্যাসিনক্রোনাস অপারেশন সম্পন্ন হয়, তখন এটি একটি "সমাধান" বা "ত্রুটি" প্রদান করে, এবং এটি প্রমিস (promise) হিসেবে রিটার্ন করা হয়।
Promise সাধারণত তিনটি স্টেট (state) থাকে:
- Pending (অপেক্ষমাণ): অপারেশনটি এখনো সম্পন্ন হয়নি।
- Resolved / Fulfilled (সম্পন্ন): অপারেশনটি সফলভাবে সম্পন্ন হয়েছে এবং ফলাফল পাওয়া গেছে।
- Rejected (বাতিল): অপারেশনটি ব্যর্থ হয়েছে এবং ত্রুটি পাওয়া গেছে।
Promise ব্যবহার করার উদাহরণ:
let promise = new Promise(function(resolve, reject) {
let success = true; // আপনি এই মান পরিবর্তন করে চেক করতে পারেন।
if (success) {
resolve("Operation successful!");
} else {
reject("Operation failed!");
}
});
promise.then(function(result) {
console.log(result); // "Operation successful!"
}).catch(function(error) {
console.log(error); // "Operation failed!"
});
এখানে, resolve হল সফল ফলাফল এবং reject হল ত্রুটি। then() পদ্ধতি সফল হলে এবং catch() পদ্ধতি ত্রুটির ক্ষেত্রে কল করা হয়।
Async/Await কি?
Async/Await হল JavaScript-এর একটি আধুনিক সিঙ্ক্রোনাস কোডের মত দেখতে অ্যাসিনক্রোনাস কোড পরিচালনা করার পদ্ধতি। এটি পদ্ধতিগতভাবে Promises ব্যবহার করে, কিন্তু কোডটি পড়তে এবং লিখতে অনেক সহজ হয়। async ফাংশন এমন একটি ফাংশন, যা একটি Promise রিটার্ন করে, এবং await একটি অ্যাসিনক্রোনাস অপারেশন এর জন্য অপেক্ষা করতে ব্যবহৃত হয়।
Async/Await ব্যবহারের উদাহরণ:
// Async function declaration
async function fetchData() {
let result = await fetch('https://jsonplaceholder.typicode.com/todos/1'); // Await data fetch
let data = await result.json(); // Await data conversion to JSON
console.log(data);
}
// Calling the async function
fetchData();
এখানে:
asyncকীওয়ার্ড ফাংশনকে অ্যাসিনক্রোনাস হিসেবে চিহ্নিত করে, যা Promise রিটার্ন করে।awaitকীওয়ার্ডটি ব্যবহার করে, আপনিfetchঅপারেশন সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করতে পারেন, এবং ফলাফল পাওয়ার পর সেটি ব্যবহার করতে পারেন।
Async/Await-এর মাধ্যমে আপনার অ্যাসিনক্রোনাস কোড পড়া সহজ হয়, কারণ এটি সিঙ্ক্রোনাস কোডের মত দেখায়।
Promises vs Async/Await
| বৈশিষ্ট্য | Promises | Async/Await |
|---|---|---|
| কোড স্টাইল | চেইনিং মেথড ব্যবহার করে then() এবং catch()। | সিঙ্ক্রোনাস কোডের মত await এবং async ব্যবহার। |
| পড়তে সুবিধা | কিছুটা জটিল, বিশেষ করে একাধিক then() চেইনিংয়ের ক্ষেত্রে। | সহজ এবং আরও সোজা, সিনক্রোনাস স্টাইলে কোড লেখা হয়। |
| এরর হ্যান্ডলিং | .catch() দিয়ে Promise এর এরর হ্যান্ডলিং করা হয়। | try/catch ব্লক দিয়ে এরর হ্যান্ডলিং করা হয়। |
| ভবিষ্যৎ | যেকোনো অ্যাসিনক্রোনাস কাজের জন্য উপযোগী। | উন্নত এবং সোজা পদ্ধতি, তবে পুরনো ব্রাউজারগুলোতে সীমাবদ্ধতা থাকতে পারে। |
প্রকৃত অ্যাসিনক্রোনাস ব্যবহারের উদাহরণ
ধরা যাক, আমরা একটি API থেকে ডেটা গ্রহণ করতে চাই এবং তার পর তার উপর কিছু প্রসেসিং করতে চাই। এর জন্য আমরা Promises এবং async/await উভয় পদ্ধতি ব্যবহার করতে পারি।
Promises ব্যবহার করে:
function fetchData() {
return new Promise((resolve, reject) => {
fetch('https://jsonplaceholder.typicode.com/posts')
.then(response => response.json())
.then(data => resolve(data))
.catch(error => reject(error));
});
}
fetchData()
.then(data => {
console.log('Data received:', data);
})
.catch(error => {
console.error('Error fetching data:', error);
});
Async/Await ব্যবহার করে:
async function fetchData() {
try {
let response = await fetch('https://jsonplaceholder.typicode.com/posts');
let data = await response.json();
console.log('Data received:', data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchData();
সারাংশ
অ্যাসিনক্রোনাস জাভাস্ক্রিপ্ট হল এমন একটি প্রোগ্রামিং কৌশল যা ডেটা বা অপারেশন প্রসেসিংয়ের সময় ওয়েব অ্যাপ্লিকেশনগুলিকে সিঙ্ক্রোনাস অপারেশন বন্ধ না করে একাধিক কাজ একযোগে করতে সক্ষম করে। Promises এবং async/await হল দুটি গুরুত্বপূর্ণ কৌশল যা অ্যাসিনক্রোনাস কোড লিখতে সহায়তা করে। Promises ব্যবহার করে আপনি অ্যাসিনক্রোনাস অপারেশন পরিচালনা করতে পারেন, যেখানে async/await আরও সহজ এবং সিঙ্ক্রোনাস কোডের মত দেখতে কোড লেখার সুবিধা দেয়।
Read more