Suspending Functions এবং Await
কটলিনের Suspending Functions এবং Await হল Coroutines এর একটি গুরুত্বপূর্ণ অংশ, যা অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের কার্যকারিতা বাড়ায়। Suspending Functions বিশেষভাবে ডিজাইন করা হয়েছে যাতে তারা অন্য Coroutine এর কাজ সম্পন্ন না হওয়া পর্যন্ত অপেক্ষা করতে পারে, এবং এটি UI থ্রেডকে ব্লক না করেই কাজ করে। নিচে Suspending Functions এবং Await নিয়ে বিস্তারিত আলোচনা করা হলো:
১. Suspending Functions
Suspending Functions হল এমন ফাংশন যা Coroutine এর ভিতরে ব্যবহৃত হতে পারে এবং একটি Coroutine এর কার্যক্রম সাসপেন্ড (অস্থায়ীভাবে থামানো) করতে পারে। এটি suspend কিওয়ার্ড দিয়ে চিহ্নিত করা হয়।
i) Suspending Functions তৈরি করা
Suspending Functions তৈরি করতে, আপনি ফাংশনের ডিক্লারেশনে suspend শব্দটি ব্যবহার করবেন।
উদাহরণ:
suspend fun fetchData(): String {
delay(2000L) // Simulating a long-running task
return "Data fetched"
}
ব্যাখ্যা:
- এখানে
fetchDataএকটি Suspending Function যা 2 সেকেন্ড বিলম্ব করে এবং পরে একটি স্ট্রিং রিটার্ন করে।
২. Suspending Functions ব্যবহার করা
Suspending Functions কেবল Coroutine ব্লকে অথবা অন্য Suspending Functions এর মধ্যে কল করা যেতে পারে।
ii) Suspending Functions এর ব্যবহার
import kotlinx.coroutines.*
fun main() = runBlocking {
val data = fetchData() // Calling the suspending function
println(data) // আউটপুট: Data fetched
}
ব্যাখ্যা:
- এখানে
runBlockingব্যবহার করে একটি Coroutine তৈরি করা হয়েছে এবংfetchDataফাংশনটি সেখানে কল করা হয়েছে।
৩. Await
Await ফাংশনটি Deferred অবজেক্টের জন্য ব্যবহৃত হয়, যা অ্যাসিঙ্ক্রোনাস কাজের ফলাফল ফেরত দেয়। যখন একটি async ব্লক ব্যবহার করে কাজ করা হয়, তখন await এর মাধ্যমে ফলাফল পাওয়া যায়।
i) Await ফাংশন ব্যবহার করা
উদাহরণ:
import kotlinx.coroutines.*
suspend fun fetchData1(): String {
delay(1000L)
return "Data 1 fetched"
}
suspend fun fetchData2(): String {
delay(1500L)
return "Data 2 fetched"
}
fun main() = runBlocking {
val deferred1 = async { fetchData1() } // Starting async operation
val deferred2 = async { fetchData2() } // Starting another async operation
// Waiting for both deferred results
println("${deferred1.await()}, ${deferred2.await()}")
// আউটপুট: Data 1 fetched, Data 2 fetched
}
ব্যাখ্যা:
- এখানে
asyncব্যবহার করেfetchData1এবংfetchData2দুইটি Suspending Function কে অ্যাসিঙ্ক্রোনাসভাবে কল করা হয়েছে। awaitব্যবহার করে আমরা ফলাফলগুলি প্রাপ্ত করেছি।awaitফাংশনটি ফলাফল পাওয়ার জন্য অপেক্ষা করে এবং এটি ব্লক না করে।
৪. Benefits of Suspending Functions and Await
- Non-blocking: Suspending Functions UI থ্রেডকে ব্লক না করে দীর্ঘস্থায়ী কার্যক্রম সম্পন্ন করতে সক্ষম।
- Code Readability: Suspending Functions ব্যবহার করে কোড লেখার সময় পারফরম্যান্স এবং রিডেবিলিটি বাড়ে।
- Efficient Resource Management:
awaitব্যবহার করে বিভিন্ন অ্যাসিঙ্ক্রোনাস কাজের ফলাফল সঠিকভাবে পরিচালনা করা যায়।
উপসংহার
কটলিনের Suspending Functions এবং Await Coroutines ব্যবহারের সময় কার্যকারিতা এবং পারফরম্যান্স বাড়াতে সাহায্য করে। Suspending Functions সঠিকভাবে কাজের কার্যক্রমকে সাসপেন্ড করে এবং await ফলাফলগুলো প্রাপ্ত করতে সহায়তা করে। এই ফিচারগুলি ব্যবহার করে আপনি অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংকে আরও সহজ ও কার্যকরী করতে পারেন।
Read more