如何强制使用协程调用函数?

时间:2020-04-28 17:43:39

标签: kotlin kotlin-coroutines

有没有一种方法使得必须在IO范围内使用协程调用函数?

我想我能做

suspend fun f() {}

但是也许有一个注释吗?

如果我仍然希望该功能被阻止怎么办?因为在函数内部,我通常在进行数据库调用。

1 个答案:

答案 0 :(得分:5)

如果它是一个暂停函数,那么肯定只能从协程调用它。

关于要求在IO范围内调用它,您可以自己安装IO调度程序:

suspend fun f() = withContext(Dispatchers.IO) { ... }

...或者,如果您真的只想拒绝不使用IO调度程序的任何用户,则可以编写require(coroutineContext[CoroutineInterceptor] == Dispatchers.IO),但我肯定会发现作为用户来说很奇怪。