定义 CoroutineScope 时 Dispatcher.IO + job 到底发生了什么?

What happen exactly Dispatcher.IO + job when define CoroutineScope?

我在我的项目中使用 Coroutine 并将 class 定义为 CoroutineScope 用于处理 Coroutines 差异 Dispatchers 例如 IO , MAIN ... 但我不明白这段代码是如何工作的,它的机制是什么?

val job = Job()

override val coroutineContext: CoroutineContext
     get() = Dispatchers.IO + job

什么意思Dispatchers.IO + job

通过 Dispatchers.IO 使用指定作业的优点是您可以随时取消该作业,而不会影响在 IO 调度程序中启动的其他作业。 您只需调用 job.cancel()

例如,您发出网络请求,当它处于 运行 时,您发现网络已关闭(例如,如果在 android 中,来自 BroadCastReciever),那么您可以取消该网络作业。 但请记住,如果工作被取消或完成,您总是必须创建一个新工作