有没有一种方法使得必须在IO范围内使用协程调用函数?
我想我能做
suspend fun f() {}
但是也许有一个注释吗?
如果我仍然希望该功能被阻止怎么办?因为在函数内部,我通常在进行数据库调用。
答案 0 :(得分:5)
如果它是一个暂停函数,那么肯定只能从协程调用它。
关于要求在IO范围内调用它,您可以自己安装IO调度程序:
suspend fun f() = withContext(Dispatchers.IO) { ... }
...或者,如果您真的只想拒绝不使用IO调度程序的任何用户,则可以编写require(coroutineContext[CoroutineInterceptor] == Dispatchers.IO)
,但我肯定会发现作为用户来说很奇怪。