gpt4 book ai didi

android - 使用流作为 API 调用的返回类型

转载 作者:行者123 更新时间:2023-12-02 01:41:13 24 4
gpt4 key购买 nike

自从过去 8 个月以来,我就开始研究 kotlin 和协同例程,据我所知,如果我们将它用作 api 调用的返回类型,那不是流的最佳使用方式。

例如:

fun getCoutries(): Flow<List<Country>> = flow {
emit(apiInterface.getAllCountries())
}

我在一次 api 调用中看到像这样的流的使用,我想知道是否应该阻止这种情况。因为流是一个流而不是一个镜头。

最佳答案

Flow是一个异步数据流,它按顺序发出值并正常或异常完成。一次 api 调用不是数据流,因此使用 Flow 是一种开销。对于单个 api 调用,我将使用 suspend 函数,上下文切换到后台线程:

fun suspend getCountries(): List<Country> = withContext(Dispatchers.IO) {
apiInterface.getAllCountries()
}

Flow 的使用取决于特定的用例。无论如何,如果您需要一个 Flow,您总是可以通过挂起函数创建它:

fun getCountriesFlow(): Flow<List<Country>> = flow {
// make request and emit items each ten seconds
while(true) {
emit(getCountries())
delay(10000)
}
}

因此对于单个 api 调用,最好使用 suspend 函数。另一方面,Flow 是一种可以按顺序发出多个值的类型,但它不会阻止 Flow 只发出一个值,所以这又取决于用途案例。

关于android - 使用流作为 API 调用的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71576087/

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