您可以在下面看到两种方法,第一种使用withContext和coroutineScope,第二种仅使用coroutine Scope。如果仅与Context一起使用怎么办?还是只有协程范围?为什么两者都需要使用?
override suspend fun deleteAllTasks() {
withContext(ioDispatcher) {
coroutineScope {
launch { tasksRemoteDataSource.deleteAllTasks() }
launch { tasksLocalDataSource.deleteAllTasks() }
}
}
}
override suspend fun deleteTask(taskId: String) {
coroutineScope {
launch { tasksRemoteDataSource.deleteTask(taskId) }
launch { tasksLocalDataSource.deleteTask(taskId) }
}
}
答案 0 :(得分:0)
在这种情况下,coroutineScope
内不需要withContext
,因为withContext
已经为您做到了。
在某些情况下,在coroutineScope
中使用withContext
可能会有用。
withContext(ioDispatcher) {
coroutineScope {
launch { tasksRemoteDataSource.deleteAllTasks() }
launch { tasksLocalDataSource.deleteAllTasks() }
}
coroutineScope {
launch { tasksRemoteDataSource.deleteAllTasks() }
launch { tasksLocalDataSource.deleteAllTasks() }
}
}
此处coroutineScope
用于并行分解并描绘并发任务集。