gpt4 book ai didi

kotlin - Kotlin协程,如何异步调用 list 并将结果作为 map 返回

转载 作者:行者123 更新时间:2023-12-02 13:10:40 26 4
gpt4 key购买 nike

var responseMap = mutableMapOf<VendorType, ChargeResponse>()
requests.forEach {
val response = when (it.vendorType) {
VendorType.Type1 -> service.chargeForType1()
VendorType.Type2 -> service.chargeForType2()

else -> {
throw NotImplementedError("${it.vendorType} does not support yet")
}
}
responseMap[it.vendorType] = response
}
responseMap
因此,我希望所有 service.charge函数都在单独的线程中运行。完成后返回 map

最佳答案

希望能解决您的问题:
假设您的服务和要求是这样的:

interface Service {
suspend fun chargeForType1(): ChargeResponse
suspend fun chargeForType2(): ChargeResponse
}

data class Request(val vendorType: VendorType)
suspend fun requestAll(requests: List<Request>): Map<VendorType, ChargeResponse> {
return coroutineScope {
requests
.map { request ->
async {
request.vendorType to when (request.vendorType) {
VendorType.Type1 -> service.chargeForType1()
VendorType.Type2 -> service.chargeForType2()
else -> throw NotImplementedError("${request.vendorType} does not support yet")
}
}
}
.awaitAll()
.toMap()
}
}

关于kotlin - Kotlin协程,如何异步调用 list 并将结果作为 map 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63475989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com