Suspending Functions এবং Await

Coroutines এবং Asynchronous Programming - কটলিন (Kotlin) - Mobile App Development

426

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 ফলাফলগুলো প্রাপ্ত করতে সহায়তা করে। এই ফিচারগুলি ব্যবহার করে আপনি অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংকে আরও সহজ ও কার্যকরী করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...