小编gar*_*ple的帖子

可以使用冗余/嵌套的 withContext 调用吗?

我有一个用 Kotlin 编写的个人项目,并且养成了非常慷慨地使用的习惯withContext(...)。我倾向于withContext(Dispatchers.IO)在调用任何可能与 I/O 相关的内容时使用。

例如:

suspend fun getSomethingFromDatabase(db: AppDatabase) = withContext(Dispatchers.IO) {
    return // ...
}

suspend fun doSomethingWithDatabaseItem(db: AppDatabase) {
    val item = withContext(Dispatchers.IO) {
        getSomethingFromDatabase(db)
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

withContext(Dispatchers.IO)您可以在第二个函数中看到冗余。我在这里格外谨慎,因为我可能不知道/记得是否getSomethingFromDatabase切换到适当的上下文。这会影响性能吗?这很糟糕吗?惯用的处理方式是什么Dispatchers

注意:我知道以这种方式在不同的上下文之间切换是完全可以的,但是这个问题具体是关于使用相同的上下文

kotlin kotlin-coroutines

6
推荐指数
1
解决办法
1062
查看次数

标签 统计

kotlin ×1

kotlin-coroutines ×1