У меня есть такой код, и я хочу собрать результаты вызова api внутри сопрограммы, а затем присоединиться к этому заданию и вернуть его из функции
private suspend fun loadRangeInternal(offset: Int, limit: Int): List<Activity> {
// load data from Room database
// calling Retrofit request
// and caching them if there is no data available
var activities: List<Activity> = listOf()
val job = GlobalScope.launch {
repo.loadActivitiesOf(settings.companyId, offset, limit)
.collect {
networkError.send(it.error)
when (it.status) {
Resource.Status.SUCCESS -> {
activities = it.data ?: listOf()
isLoading.send(false)
}
Resource.Status.LOADING -> {
isLoading.send(true)
}
Resource.Status.ERROR -> {
isLoading.send(false)
}
}
}
}
job.join()
Timber.d("Activities loaded: $activities")
return activities
}
Я также пробовал asyn c вместо запуска, и ждать вместо соединения