【发布时间】:2020-11-26 07:55:40
【问题描述】:
我正在从一个挂起函数调用一个 Api,在成功执行它之后,我需要调用另一个 Api(它也在另一个挂起函数中)。
suspend fun updateSubscription(body: Map<String, Any>): NetworkResponse<SubscriptionUpdateResponse> =
withContext(Dispatchers.IO) {
val response = networkManager.execute(
networkManager.updateSubscriptionApi(body)
)
val data = response.body()
if (response.isSuccessful) {
fetchSubscriptions() // suspend function which call another api, should run without blocking
}
return@withContext parseNetworkResponse(response, data)
}
我想调用updateSubscriptionApi,在它成功执行后,不阻塞地调用fetchSubscription并返回updateSubscription结果。
目前,fetchSubscription 也在阻止 updateSubscription。我尝试像这样在async 块中调用updateSubscription,但没有成功。
async{ updateSubscription() }
如何在不阻塞updateSubscription的情况下拨打fetchSubscriptions()。
【问题讨论】:
标签: kotlin asynchronous kotlin-coroutines suspend