【发布时间】:2020-01-28 17:28:26
【问题描述】:
我有一个应用程序范围函数,它像这样从服务器请求访问令牌
fun getToken() {
GlobalScope.launch {
...
val response = webservice.getToken().awaitResponse()
//save token
}
}
我在存储库中也有一些函数,这些函数从服务器请求数据并从视图模型中启动,就像这样
//in a ViewModel
fun getData() {
viewModelScope.launch(Dispatchers.IO) {
repository.getData()
}
}
//in a Repository
fun getData() {
...
val response = webservice.getData().awaitResponse()
//handle response
}
如何使数据请求仅在有可用访问令牌时才发送?
我唯一想到的就是在每次这样的数据请求之前检查并请求令牌(如果需要)
fun getData() {
var response: Response
token?.let {
response = webservice.getToken().awaitResponse()
//save token
}
...
response = webservice.getData().awaitResponse()
//handle response
}
但是,当不同的存储库中有许多不同的数据请求时,使用这种方法是否正确?
【问题讨论】:
标签: android kotlin kotlin-coroutines