kotlin Flow的用法

测试下异步数据流Flow的用法:

Kotlin 复制代码
private fun testFlow() { // 测试 Flow
        GlobalScope.launch {
            println("Start loading...")
            loadPages()
                .catch { e -> println("Error: $e") }
                .collect { pageData ->
                    Log.d("zxzx", "获取到data:${pageData}")
                    // 更新 UI
                }
            Log.d("zxzx", "done")
            Log.d("zxzx", "无所吊谓")
        }
    }

    // 模拟 API
    suspend fun fetchPage(page: Int): List<String> {
        delay(1000) // 模拟网络延迟
        return List(3) { "Page $page - Item $it" }
    }

    fun loadPages(): Flow<List<String>> = flow {
        for (page in 1..3) {
            val data = fetchPage(page)
            emit(data) // 发射每一页数据
        }
    }.flowOn(Dispatchers.IO) // 网络请求在 IO 线程执行

调用testFlow函数,打印:

ok. 这个是基本用法。

相关推荐
Cg136269159744 小时前
JS-对象-Dom案例
开发语言·前端·javascript
故事和你914 小时前
sdut-程序设计基础Ⅰ-实验五一维数组(8-13)
开发语言·数据结构·c++·算法·蓝桥杯·图论·类和对象
Jin、yz4 小时前
JAVA 八股
java·开发语言
我是唐青枫5 小时前
C#.NET Span 深入解析:零拷贝内存切片与高性能实战
开发语言·c#·.net
lxh01135 小时前
数据流的中位数
开发语言·前端·javascript
盒马盒马5 小时前
Rust:迭代器
开发语言·后端·rust
RDCJM5 小时前
【MySQL】在MySQL中STR_TO_DATE()以及其他用于日期和时间的转换
android·数据库·mysql
Full Stack Developme6 小时前
Java 常用通信协议及对应的框架
java·开发语言
冬奇Lab6 小时前
AudioFlinger架构基础:Android音频系统的心脏
android·音视频开发·源码阅读
铁手飞鹰7 小时前
Visual Studio创建Cmake工程导出DLL,通过Python调用DLL
android·python·visual studio