Kotlin 学习笔记(五)—— Flow 数据流学习实践指北(一)

源码 2024-9-27 15:24:22 102 0 来自 中国
Kotlin 学习笔记艰难地来到了第五篇~ 在这一篇主要会说 Flow 的基本知识和实例。由于 Flow 内容较多,所以会分几个小节来讲解,这是第一小节,文章后面会结合一个实例介绍 Flow 在实际开发中的应用。
首先回想一下,在协程中处理某个操作,我们只能返回单个结果;而 Flow 可以按顺序返回多个结果,在官方文档中,Flow 被翻译为 数据流,这也说明了 Flow 适用于多值返回的场景。
Flow 是以协程为基础构建的,所以它可通过异步的方式处理一组数据,所要处理的数据类型必须相同,比如:Flow<Int>是处理整型数据的数据流。
Flow 一般包含三个部分:
1)提供方:负责生成数据并添加到 Flow 中,得益于协程,Flow 可以异步生成数据;
2)中介(可选):可对 Flow 中的值进行操作、修改;也可修改 Flow 本身的一些属性,如所在线程等;
3)使用方:接收并使用 Flow 中的值。
提供方:生产者,使用方:消费者,典型的生产者消费者模式。
1. Flow 概述

Flow 是一个异步数据流,它可以顺序地发出数据,通过流上的一些中间操作得出结果;若出错可抛出异常。这些 “流上的中间操作” 包括但不限于 map、filter、take、zip 等等方法。这些中间操作是链式的,可以在后面再次添加其他操作方法,并且也不是挂起函数,它们只是构建了一条链式的操作并实时返回结果给后面的操作步骤。
流上的终端操作符要么是挂起函数,例如 collect、single、toList 等等,要么是在给定作用域内开始收集流的 launchIn 操作符。前半句好理解,后半句啥意思?这就得看一下 launchIn 这个终端操作符的作用了。它里面是这样的:
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 00:17, Processed in 0.117686 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表