如何解决ChannelFlow生产者范围未触发
我对以下代码有疑问:
suspend fun getData(): Flow<Resource<User>> {
println("#getData called")
return channelFlow {
println("#getData producer scope started")
launch(dispatchers.IO) {
val cachedData = sharedPreferencesUtils.getData()
println("#getData send cached data")
send(cachedData)
}
launch(dispatchers.IO) {
val response = handleAPI<EducationResponse> { apiService.getData() }
println("#getData send remote data")
send(response)
}
}
}
以上代码大多数时候都可以工作,并且可以从本地和远程发送数据,但有时生产者范围未触发(仅打印“ #getData被调用”)
请指教!
更新:
和收集的流量:
Coroutinescope(dispatchers.IO).launch(AppExceptionHandler.exceptionHandler) {
prescriptionsRepository
.getData()
.collect {
educationWithSponsorsLiveData.postValue(it)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。