提问人:Ummer Siddique 提问时间:7/27/2023 更新时间:7/27/2023 访问量:109
Kotlin 语言中的上游/下游流是什么
What are upstream/downstream flows in the Kotlin language
问:
在流文档中,他们提到了上游和下游流:
可以使用运算符转换流,就像使用集合和序列一样。中间运算符应用于上游流并返回下游流。
给定代码(来自同一来源):
(1..3).asFlow() // a flow of requests
.map { request -> performRequest(request) }
.collect { response -> println(response)
上游和下游是否意味着输入和输出(返回值)?例如,当编程语言开始执行部件时,值 是上游流,返回值是下游流?.map
(1..3).asFlow()
.map {...}
答:
-3赞
Ummer Siddique
7/27/2023
#1
Kotlin 的官方定义:
interface Flow<out T>
按顺序发出值并正常完成或异常完成的异步数据流。
流上的中间运算符(如 map、filter、take、zip 等)是应用于上游流或流的函数,并返回下游流,可以应用更多运算符。中间操作不执行流中的任何代码,也不会挂起函数本身。他们只为将来的执行设置了一系列操作,然后迅速返回。这称为冷流特性。
流上的终端运算符要么挂起 collect、single、reduce、toList 等函数,要么在给定范围内开始收集流的 launchIn 运算符。它们应用于上游流并触发所有操作的执行。流的执行也称为收集流,并且始终以挂起方式执行,而不会实际阻塞。终端操作员正常或例外地完成取决于上游所有流操作的成功或失败执行。最基本的终端算子是 collect,例如:
try {
flow.collect { value ->
println("Received $value")
}
} catch (e: Exception) {
println("The flow has thrown an exception: $e")
}
评论