как получить (вернуть )данные из CoroutineScope Kotlin

Всем привет, только начал изучать андройд разработку, вопрос : есть код :

fun startcoroutin (pegenamber:Int) {

    //запуск загрузки json in corotine
    job?.cancel()
    job = CoroutineScope(Dispatchers.Main).launch {

        var jsonlist = LoadJson().loadjsonlist(pegenamber) //  это suspend
        
    }
}

как можно из этой функции вернуть значение jsonlist ? делала так но не работает ошибка :

fun startcoroutin (pegenamber:Int):JSONObject {

    //запуск загрузки json in corotine
    job?.cancel()
    job = CoroutineScope(Dispatchers.Main).launch {

        var jsonlist = LoadJson().loadjsonlist(pegenamber) //  это suspend
        
    }
     return jsonlist  //   не видит переменную из корутины 
}

как можно решить этот вопрос ? спасибо


Ответы (1 шт):

Автор решения: oQaris

Попробуйте использовать вместо launch функцию async, которая возвращает вычисленное значение:

fun startCoroutine(pageNumber: Int) = scope.async {
        var jsonList = LoadJson().loadjsonlist(pageNumber)
        return@async jsonList
    }

Затем вызвать await для получения результата, например:

Log.i(startCoroutine(5).await())
→ Ссылка