跳转至

科特林 coroutines 中的 withcontext

原文:https://www . geesforgeks . org/with context-in-kotlin-coroutines/

先决条件:

中启动 vs 异步

众所周知异步和启动是启动协同的两种方式。由于已知 async 是用来取回结果的,所以&应该只在我们需要并行执行的时候使用,而 launch 是在我们不想取回结果的时候使用,用于数据更新等操作。正如我们所知,异步是到目前为止启动协同并返回结果的唯一方法,但是当我们不想进行并行网络调用时,异步的问题就出现了。众所周知,当使用异步时,需要使用*await()*函数,这将导致阻塞主线程,但这里出现了 withContext 的概念,它消除了阻塞主线程的问题。

withContext 只不过是写异步的另一种方式,在这种方式中,不必写wait()。当使用 withContext 时,它以串行方式而不是并行方式运行任务。因此,人们应该记住,当我们在后台有一个单一的任务,并且想要获得该任务的结果时,我们应该使用 withContext。让我们举一个例子来说明 withContext 的工作原理:

**## 【科特林】

```kt // two kotlin suspend functions // Suppose we have two tasks like below

private suspend fun doTaskOne(): String {   delay(2000)   return "One" }

private suspend fun doTaskTwo(): String {   delay(2000)   return "Two" } ```**


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组