微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ChannelFlow生产者范围未触发

如何解决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 举报,一经查实,本站将立刻删除。