测试下异步数据流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. 这个是基本用法。