【发布时间】:2019-09-19 09:08:10
【问题描述】:
我目前正在尝试围绕 Web 请求创建一个缓存层。到目前为止,我已经写了:
class Repository(private val webServices: WebServices) {
private var cachedItems: List<Item>? = null
suspend fun getItems(): List<Item> {
cachedItems?.let { return it }
val items = withContext(Dispatchers.IO) { webServices.getItems() }
cachedItems = items
return items
}
}
我担心的是当两个调用者同时调用getItems() 时会发生什么。理想情况下,我只希望发生一个 Web 请求。使用协程时处理此问题的推荐方法是什么?
【问题讨论】:
-
嗨!您只想使用协程来解决这个问题吗?
-
是的!这只是学习如何使用它们的练习。