gpt4 book ai didi

kotlin - 仅返回协程更快的值

转载 作者:行者123 更新时间:2023-12-04 15:06:01 24 4
gpt4 key购买 nike

如何并行运行多个协程并仅返回最先完成的协程的值?

在现实生活中,我有两个数据源-数据库和API服务。我不在乎数据从哪里来,我只需要快速。完成查询后,如何查询数据库和API服务并取消另一个请求?

在RxJava世界中,这等于Amb operator。如何使用协程实现类似的行为?

最佳答案

我想出了以下实现:

suspend fun getFaster(): Int = coroutineScope {
select<Int> {
async { getFromServer() }.onAwait { it }
async { getFromDB() }.onAwait { it }
}.also {
coroutineContext.cancelChildren()
}
}
coroutineScope充当其中执行的所有异步调用的父级。 select完成后,我们可以取消其余的代码。

关于kotlin - 仅返回协程更快的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56987792/

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