Asynchronous এবং Synchronous methods হল দুটি গুরুত্বপূর্ণ প্রোগ্রামিং কনসেপ্ট, যা কোডের কার্যক্ষমতা, কার্যকারিতা এবং ডেটা প্রসেসিং এর সময় নির্ধারণ করে। এগুলির মধ্যে পার্থক্য ডেটা প্রক্রিয়া করার সময় এবং এক্সিকিউশন স্টাইলে নির্ভর করে। সাধারণত Synchronous কোড একবারে একটি কাজ সম্পন্ন করে, যেখানে Asynchronous কোড একাধিক কাজ একযোগে করতে সক্ষম, যা বিশেষ করে দীর্ঘ সময় নেওয়া কাজের জন্য উপকারী।
Synchronous Methods
Synchronous methods হল সেই ধরণের কার্যপদ্ধতি যেখানে এক এক্সিকিউশন স্টেপ সম্পূর্ণ হওয়ার পরে পরবর্তী স্টেপে যেতে হয়। এটি একধরণের "step-by-step" প্রক্রিয়া, যেখানে এক কাজের সম্পন্ন হওয়া অবধি পরবর্তী কাজ শুরু হয় না। এর ফলে, কোড একটির পরে একটি কাজ সম্পাদন করে এবং প্রতিটি কাজের জন্য অপেক্ষা করতে হয়।
Synchronous Execution Example:
console.log("Start");
function task1() {
console.log("Task 1 is completed");
}
function task2() {
console.log("Task 2 is completed");
}
task1(); // Synchronously executed
task2(); // Synchronously executed
console.log("End");
Output:
Start
Task 1 is completed
Task 2 is completed
End
এখানে, task1() এবং task2() একে একে সম্পন্ন হয়। একটির পরবর্তী কাজ শুরু হওয়ার আগে প্রথম কাজ শেষ হতে হয়।
Characteristics of Synchronous Methods:
- এক সময় এক কাজ সম্পাদিত হয়।
- ব্লকিং অপারেশন: একটি কাজ শেষ না হওয়া পর্যন্ত পরবর্তী কাজ শুরু হয় না।
- সাধারনত CPU-intensive কাজগুলো synchronous প্রক্রিয়ায় করা হয়, যেমন ডেটাবেসের সিঙ্ক্রোনাস কুয়েরি।
Asynchronous Methods
Asynchronous methods হল সেই ধরণের কার্যপদ্ধতি যেখানে কাজের প্রক্রিয়া একে একে হয় না। এর মানে হল যে, যখন একটি কাজ চলছে, তখন অন্য কাজগুলি সঠিকভাবে সম্পন্ন হতে পারে। Asynchronous কোডের প্রধান সুবিধা হল যে এটি অন্যান্য কাজগুলোর জন্য অপেক্ষা না করে চলতে থাকে। এটি দীর্ঘ সময় নেওয়া কাজ (যেমন ফাইল I/O, API কল, ডেটাবেস কুয়েরি) এর ক্ষেত্রে বিশেষভাবে উপকারী।
Asynchronous Execution Example:
console.log("Start");
function task1() {
setTimeout(() => {
console.log("Task 1 is completed");
}, 2000); // Simulating async task with 2 second delay
}
function task2() {
console.log("Task 2 is completed");
}
task1(); // Asynchronous execution
task2(); // Immediately executed
console.log("End");
Output:
Start
Task 2 is completed
End
Task 1 is completed
এখানে, task1() একটি setTimeout ব্যবহার করছে, যা 2 সেকেন্ড পর কার্যকর হবে। তবে task2() তাৎক্ষণিকভাবে সম্পন্ন হয় এবং এরপর task1() এর সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করে না।
Characteristics of Asynchronous Methods:
- এক সময় একাধিক কাজ চলতে পারে।
- Non-blocking: এটি ব্লকিং অপারেশন হতে দেয় না, অর্থাৎ একটি কাজ শেষ না হলেও পরবর্তী কাজগুলি চলতে থাকে।
- সাধারনত I/O-intensive কাজ, যেমন ফাইল রিডিং, HTTP API কল ইত্যাদির জন্য asynchronous পদ্ধতি ব্যবহৃত হয়।
Asynchronous এবং Synchronous Methods এর পার্থক্য
| Feature | Synchronous Methods | Asynchronous Methods |
|---|---|---|
| Execution | এক এক সময় কাজ সম্পন্ন হয়। | একাধিক কাজ এক সাথে সম্পন্ন হতে পারে। |
| Blocking | কাজ সম্পন্ন না হওয়া পর্যন্ত পরবর্তী কাজ শুরু হয় না। | পরবর্তী কাজের জন্য অপেক্ষা করতে হয় না। |
| Performance | বড় কাজ বা দীর্ঘ সময় নিতে পারে, কারণ একে একে কাজ করতে হয়। | দীর্ঘ সময় নেওয়া কাজ দ্রুত করতে সক্ষম। |
| Example | ফাইল সিঙ্ক্রোনাসলি পড়া। | API কল বা ডেটাবেসে অ্যাসিঙ্ক্রোনাস কোয়েরি। |
| Use Case | CPU-intensive কাজ। | I/O-intensive কাজ (যেমন ফাইল সিস্টেম, API কল) |
| Error Handling | সাধারণত try-catch ব্যবহার করে। | কলব্যাক, Promises বা Async/Await ব্যবহার করে। |
Asynchronous Methods Error Handling
Asynchronous কোডে ত্রুটি পরিচালনা করা কিছুটা কঠিন হতে পারে। তবে, JavaScript এ Promises এবং Async/Await এর মাধ্যমে এর সমাধান করা যায়।
Promise Example:
function task1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Task 1 is completed");
}, 2000);
});
}
function task2() {
return new Promise((resolve, reject) => {
resolve("Task 2 is completed");
});
}
task1()
.then(result => {
console.log(result);
return task2();
})
.then(result => {
console.log(result);
})
.catch(error => {
console.error("Error:", error);
});
Output:
Task 1 is completed
Task 2 is completed
এখানে, task1() এবং task2() কে Promises দিয়ে প্রক্রিয়া করা হচ্ছে। task1() সম্পন্ন হলে তারপর task2() চালানো হচ্ছে।
Async/Await Example:
async function runTasks() {
try {
const result1 = await task1();
console.log(result1);
const result2 = await task2();
console.log(result2);
} catch (error) {
console.error("Error:", error);
}
}
runTasks();
Output:
Task 1 is completed
Task 2 is completed
এখানে, async/await ব্যবহার করে কোডটি synchronous এর মতই দেখাচ্ছে, তবে এটি কার্যকরীভাবে asynchronous।
Conclusion
- Synchronous methods একে একে কাজ সম্পন্ন করে এবং পরবর্তী কাজের জন্য অপেক্ষা করতে হয়।
- Asynchronous methods একযোগে একাধিক কাজ করতে সক্ষম এবং এটি non-blocking।
- Asynchronous methods যখন I/O বা দীর্ঘ সময় নেওয়া কাজের জন্য ব্যবহার করা হয়, তখন সিস্টেমের কর্মক্ষমতা ও রেসপন্স টাইম উন্নত হয়।
ডেভেলপাররা সাধারণত asynchronous পদ্ধতি ব্যবহার করেন যেখানে ব্যাকগ্রাউন্ডে দীর্ঘ সময় নেওয়া কাজের জন্য অপেক্ষা করতে হবে না, এবং ইউজার ইন্টারফেস স্নিগ্ধ থাকে।
Read more