我如何使用存储库 android 中的流程?
How can i work with flow inside repository android?
我编写的代码在没有 kotlin flow 的情况下也能正常工作,但我想尝试 kotlin flow,当我在存储库中使用它时,但不知何故它甚至没有进入内部我找不到任何解决方案,因为它没有抛出任何错误,它只是没有进入内部功能,我认为这是因为流量收集器。它即将到达存储库,但对于回购它没有进入。
class NewsRepositoryImpl(private val newsService: NewsService) : NewsRepository {
override suspend fun getNews(search: String): Flow<ResultWrapper<List<Article>>> = flow {
emit(ResultWrapper.Loading)
try {
val news = newsService.getNews(search, BuildConfig.API_KEY)
emit(ResultWrapper.Success(news.articles.map { it.toArticle() }))
} catch (e: Exception) {
emit(ResultWrapper.Error(e.message))
}
}
}
使用 flow
生成器创建冷数据流。其中的代码仅在流被收集时执行,即 terminal operators 被调用,例如 collect
、collectLatest
、first
....
coroutineScope.launch {
newsRepository.getNews("news").collectLatest { result ->
// use result
}
}
我编写的代码在没有 kotlin flow 的情况下也能正常工作,但我想尝试 kotlin flow,当我在存储库中使用它时,但不知何故它甚至没有进入内部我找不到任何解决方案,因为它没有抛出任何错误,它只是没有进入内部功能,我认为这是因为流量收集器。它即将到达存储库,但对于回购它没有进入。
class NewsRepositoryImpl(private val newsService: NewsService) : NewsRepository {
override suspend fun getNews(search: String): Flow<ResultWrapper<List<Article>>> = flow {
emit(ResultWrapper.Loading)
try {
val news = newsService.getNews(search, BuildConfig.API_KEY)
emit(ResultWrapper.Success(news.articles.map { it.toArticle() }))
} catch (e: Exception) {
emit(ResultWrapper.Error(e.message))
}
}
}
使用 flow
生成器创建冷数据流。其中的代码仅在流被收集时执行,即 terminal operators 被调用,例如 collect
、collectLatest
、first
....
coroutineScope.launch {
newsRepository.getNews("news").collectLatest { result ->
// use result
}
}