问题标签 [kotlinx.coroutines]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
264 浏览

android - 当视图被回收时,如何在回收器适配器项中保存一些数据以取消飞行中的请求?

我有一个回收器适配器,它在滚动时从网络加载内容(包括缩略图和其他一些数据)。

但是,当我滚动很长的距离时,适配器会尝试将请求排队,以便加载起点和点之间的所有项目,然后在新位置的项目之前显示。当它们像这样快速滚动过去时,我不想继续加载这些中间项目。

我尝试编写以下代码来执行此操作:

所以,我想我知道为什么它不起作用。当我取消飞行中的工作时,我真的取消了之前启动的调用,而不是正在重新加载的回收器视图元素的调用。但是,我不确定如何将作业与此元素相关联,这样当此视图被回收时,它会取消它自己的飞行请求。

有什么帮助吗?

0 投票
1 回答
263 浏览

kotlin - 有没有像 XStream Stream 一样的 Kotlin 协程通道?

我想要一个行为类似于XStream的协程通道Stream

  1. send到通道总是非阻塞的
  2. 如果没有接收器,则没有缓冲区并且值“丢失”。
  3. 新订户不会获得最后一个值。
  4. 所有订阅者都会收到所有值(如BroadcastChannel

我找到的最接近的是ConflatedBroadcastChannel,但是它“记住”了最后一个值,使它像XStream MemoryStream

是否有解决方法来获得我的确切语义?

0 投票
1 回答
1786 浏览

multithreading - 如何等待线程在 Kotlin 中初始化变量?

我有一个基于 JavaFX 的应用程序,用 Kotlin 编写。默认情况下,JavaFX 在单独的线程中运行,我想确保当 JavaFX 到达它使用该变量的部分时,在主线程中初始化的变量已准备好。

Java 具有我将在该变量上使用的方法,但它们在 Kotlin 中不可用waitnotify

我还研究了 Kotlin 协程,但它们似乎是围绕任务依赖性构建的(即一个任务可以等待另一个任务),但它们不能简单地使用变量,并且使用协程而不是线程,即如果我使用协程为了协调我的变量,JavaFX 仍然在一个单独的线程上运行,它不能与协程一起协调(或者我错过了什么?)。

0 投票
2 回答
860 浏览

android - android闪屏中挂起功能的使用

我的应用程序启动屏幕用于从网络获取数据,数据获取成功后,我想将用户发送到主屏幕。通常,我们使用 Thread.sleep 或 Handler 在 Splash 屏幕上停留一段时间。我们可以使用 Kotlin 的挂起功能来做到这一点吗?

0 投票
0 回答
1288 浏览

android - Kotlin Coroutine Main Looper Android

当我想到一个自然问题时,我一直在研究 Android 中的协程及其应用程序。为什么我们不使用 Main Looper 的非阻塞实现来处理主协程内的消息队列,以便我们可以在应用程序的任何部分使用挂起函数而无需显式启动新的协程?

我远不是协程专家,但我认为这种增强可能很有用,即使可能需要对 Android 的平台代码进行完整的修订。

0 投票
2 回答
3279 浏览

kotlin - 此处不允许“返回”:Kotlin Coroutine 启动(UI)块

上面的代码工作正常。我想通过返回(从而停止执行) if 来避免 if 中的嵌套部分res == null,就像这样,

当我在 <--A 指示的行中使用 return 时,它说这里不允许“return”

这里有退出launch块的关键字吗?什么是可以在这里使用而不是返回的替代方法?

0 投票
1 回答
1428 浏览

kotlin - 如何在 Kotlin/Native 中构建 kotlinx.coroutines(测试版本 0.23.4-native-1)

这个问题是这个线程的延续: https ://github.com/Kotlin/kotlinx.coroutines/issues/246#issuecomment-407023156

我正在尝试org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.23.4-native-1在针对 iOS 的 Kotlin/Native 项目中使用。

build.gradle

kotlinx:kotlinx-coroutines-core-native依赖项似乎不起作用,因为会产生如下构建错误:

如果我手动包含工件依赖项,例如org.jetbrains.kotlinx:kotlinx-coroutines-core-native_release_ios_x64:0.10.3-native,那么我会得到一个编译器异常:

即使我还添加了org.jetbrains.kotlinx:atomicfu-native:0.10.3-native依赖项,此错误仍然存​​在。

0 投票
2 回答
3485 浏览

android - android.os.Looper 中的方法 myLooper 未使用 Coroutines 模拟

我想在 JUnit 中对协程进行一些测试,但遇到了一些问题。代码很简单:

但我得到了那个错误

我首先想到的是错误的协程上下文。所以可以肯定的是我用过Unconfined,但这不起作用。

我试过了

但这也不起作用,我收到以下错误:

但是根本没有Android main looper

如何在 JUnit 中运行阻塞协程?

0 投票
3 回答
904 浏览

kotlin - 相当于 Kotlin 中 C# 的 Semaphore/SemaphoreSlim?

在 Kotlin 中是否有与 C# 的 Semaphore/SemaphoreSlim 类型等效的类型?我想将它与协同程序(非阻塞)一起使用。即 WaitOneAsync()。

0 投票
2 回答
6238 浏览

callback - 在 kotlin 中,我如何模拟一个包装回调的挂起函数?

假设有一个带有回调的接口:

我将其扩展到这样的挂起函数:

我想在测试中模拟这个,但我失败了。理想情况下,我想使用这样的东西:

上述语法因模拟异常而失败,因为它期望回调的匹配器。

我怎样才能模拟这样的挂起功能?如果不可能使用类似的语法,我如何才能使用所需的参数进行模拟回调,以便在整个代码中使用的挂起变体在测试期间返回所需的结果?

更新:当它是一个扩展功能时,它似乎是不可能的。根据Marko Topolnik的评论,我认为这是因为扩展只是一个静态函数,超出了 mockito 的能力。

当挂起函数是成员函数时,它会按预期工作,使用我的原始语法。

这是带有一些演示代码的要点: https ://gist.github.com/mirceanis/716bf019a47826564fa57a77065f2335