Sobes.tech
Junior — Middle

Πώς μπορεί να ξεκινήσει η εκτέλεση μιας suspend λειτουργίας σε Kotlin;

sobes.tech AI

Απάντηση από AI

Στην Kotlin, οι συναρτήσεις suspend μπορούν να καλούνται μόνο από μια άλλη suspend συνάρτηση ή από μια coroutine. Για να ξεκινήσετε μια suspend συνάρτηση εκτός πλαισίου suspend, χρησιμοποιείτε ένα scope coroutine και λειτουργίες εκκίνησης όπως launch ή async από τη βιβλιοθήκη kotlinx.coroutines.

Παράδειγμα:

import kotlinx.coroutines.*

suspend fun fetchData() {
    delay(1000) // προσομοίωση μιας μακράς λειτουργίας
    println("Δεδομένα λήφθηκαν")
}

fun main() {
    runBlocking { // ξεκινά μια coroutine και μπλοκάρει το τρέχον νήμα
        fetchData() // κλήση suspend συνάρτησης μέσα σε suspend πλαίσιο
    }

    GlobalScope.launch { // εκκίνηση coroutine στο παγκόσμιο scope
        fetchData()
    }
    Thread.sleep(2000) // ώστε το πρόγραμμα να μην τερματίσει νωρίτερα
}

Επομένως, για να ξεκινήσετε μια suspend συνάρτηση, πρέπει να βρίσκεστε μέσα σε μια suspend συνάρτηση ή να ξεκινήσετε μια coroutine με launch, async ή runBlocking.