I need to run 6 API calls Simultaneously and need to update the UI for each when corresponding request finishes
Currently I am using kotlin coroutines parallel execution using the following code
suspend fun getAllData() : List<String>{
return withContext(Dispatchers.IO) {
lateinit var getObject1Task: Deferred<Response<String>>
lateinit var getObject2Task: Deferred<Response<String>>
lateinit var getObject3Task: Deferred<Response<String>>
lateinit var getObject4Task: Deferred<Response<String>>
lateinit var getObject5Task: Deferred<Response<String>>
lateinit var getObjec6Task: Deferred<Response<String>>
launch {
getObject1Task = dataApiService.getData()
getObject2Task = dataApiService.getData()
getObject3Task = dataApiService.getData()
getObject4Task = dataApiService.getData()
getObject5Task = dataApiService.getData()
getObject6Task = dataApiService.getData()
}
var stringList = ArrayList<String >()
stringList.add(getObject1Task.await().body()!!) /// add All to the list
stringList
}
}
I am unable to find a way a way to get data for each string as soon as that API finishes. I also tried LiveData but some how that was making any sense.
Each String has no link with the other so it not essential to add all strings in a list