问题标签 [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 回答
3689 浏览

android - Kotlin协程取消后无法捕获异常抛出

使用kotlinx.coroutines lib 如果在取消协程后抛出异常,我将无法捕获异常。这会导致应用程序崩溃。

}

在 Android 上运行此函数会产生以下日志输出

似乎正在调用成功捕获的cancel()throws 。CancellationException但随后RuntimeException没有被抓到。我想lib应该忽略作业取消后的以下异常吗?或者我如何可以在不引发CancellationException异常的情况下静默取消工作?

0 投票
1 回答
768 浏览

kotlin - 扇出/扇入——关闭结果通道

我正在生产项目,从多个协同程序中消费并推回 resultChannel。Producer 在最后一项之后关闭其频道。

代码永远不会完成,因为 resultChannel 永远不会被关闭。如何检测并正确完成迭代所以hasNext()返回false

0 投票
1 回答
998 浏览

kotlin - Vertx 和 Kotlin 协程永远挂起

我正在使用 Kotlin 协程重写一些 Java Vertx 异步代码以用于学习目的。但是,当我尝试测试一个简单的 HTTP 调用时,基于协程的测试永远挂起,我真的不明白问题出在哪里。这里有一个复制器:

每个人都能弄清楚问题吗?

0 投票
1 回答
1080 浏览

android - Kotlin:将 DispatchTask 转换为字符串期间出现 ArrayIndexOutOfBoundsException

我们已经将我们的第一个 Kotlin 部分发布到生产环境中,并且我们遇到了这个堆栈跟踪的崩溃:

谷歌向我们展示了这在 Android 5 上 100% 发生。Crashlytics/Fabric 还显示了来自 Android 4.4 的两次崩溃。较新的 Android 版本没有崩溃。

我不知道如何防止这种崩溃或如何复制它。

当前版本:

  • org.jetbrains.kotlinx:kotlinx-coroutines-core:0.16
0 投票
1 回答
830 浏览

kotlin - 如何通过改造阻塞客户端和协程实现有限调用

我有以下代码:

我希望阻塞 api 同时发生 10 个调用。但是,上面的代码似乎没有像我预期的那样做(我认为所有的调用都会立即开始),或者至少我不明白它是否这样做。
实施它的正确方法是什么?如果我使用改造的异步 api,相同的解决方案会起作用吗?

0 投票
1 回答
1065 浏览

kotlin - 如何在 kotlin 中编写递归协程

我想在 kotlin 中编写一个更快的文件搜索器来查找我的主文件夹下的所有文本文件。

这是我的序列搜索代码

我写了一个程序,但是当你有很多文件时,它会抛出 NullPointerException,它怎么可能抛出空指针异常?

0 投票
1 回答
437 浏览

java - Spring 5 和 Kotlin 1.1 协程:类型 rx.Scheduler 不存在

我正在使用带有 Spring-context 5.0.0.RELEASE 的 Kotlin 1.1.4-3。

在启动项目时,我收到此错误:

似乎 spring 正在寻找rx.Scheduler类,但它不在类路径中。很明显rx.Scheduler没有添加相应的依赖。但我在互联网上找不到任何相关的东西。

我将 RxJava2 ( io.reactivex.rxjava2) 添加到项目中,但它不起作用。我能做些什么?

最终答案 - 基于 Rafal G. 回复:

这个错误是因为使用了 konrad-kaminski/spring-kotlin-coroutine库。但是,我在我的项目中使用了这些依赖项:

0 投票
2 回答
812 浏览

android - 使用单元测试支持在 Kotlin 中使用清洁协程

一段时间以来,我们一直在使用 Kotlin,我们目前关注的一件事是使用协程来处理我们想要异步运行的操作。

虽然示例用法很清楚并且有效,但我在我们的架构中以干净的方式集成它时遇到了一些问题。在查看以领域为中心的类的方法实现时,想法是它易于阅读,并且异步功能的“噪音”尽可能少。我知道我不能有异步,没有实际使用它。所以写这样的东西就是我想要的:

但这是我想防止的:

那,我想为这些以领域为中心的课程搭配实用的单元测试,但我真的无法让它发挥作用。让我们看一个例子:

这有效(截图:https ://imgur.com/a/xG9Xw )。现在让我们看看测试。

现在这个测试不太理想,但无论如何,它甚至无法验证事情是否按预期工作,因为没有初始化 lateinit var 数据。现在归根结底,我们的领域类的美观和可读性就是我想走多远,我有一些我很满意的实际工作示例。但是让我的测试工作似乎具有挑战性。

现在网上有一些关于这类东西的不同文章,但对我来说没有任何效果。这(https://medium.com/@tonyowen/android-kotlin-coroutines-unit-test-16e984ba35b4)看起来很有趣,但我不喜欢调用类为演示者启动上下文的想法,因为在turn 具有执行一些异步工作的依赖项。虽然作为一个抽象的想法,我喜欢“嘿,演示者,无论你做什么,就 UI 上下文向我报告”的想法,但它更像是一种使事情正常进行的修复,导致对不同对象的异步功能的共同关注.

无论如何,我的问题:远离简短的示例,是否有人对如何将协程集成到更大的架构中以及工作单元测试有任何指示?我也很愿意接受那些让我改变看待事物的方式的论点,因为它在不同的层面上具有说服力,而不是“如果你想让事情发挥作用,你就必须牺牲。”。这个问题不仅仅是让示例工作,因为这只是一个孤立的示例,而我正在寻找一个大项目中真正可靠的集成。

期待您的输入。提前致谢。

0 投票
1 回答
3289 浏览

spring - Kotlin 协程和 Spring Framework 5 反应类型

DeferredKotlin 协程允许通过返回值来执行非阻塞代码。这对于在使用阻塞方法(例如来自库)时生成非阻塞代码非常有用。

Spring 5 允许使用MonoFlux进入框架。我看到的最大兴趣是能够序列化这两种类型的实例,并在有人调用控制器端点时将其作为响应发送回来。

Spring 5 的一大亮点是对 Kotlin(路由器、bean 声明等)的特定支持,但我找不到有关 Kotlin 协程和 Spring 5 反应类型之间可能交互的信息。

有没有办法结合这些功能的优点?

  • 转换DeferredMono/ Flux
  • 具有Deferred作为响应类型的 Spring 控制器方法?

如果不是,如果我们有 Spring 5 反应类型,在哪些情况下协程有意义?

0 投票
1 回答
289 浏览

kotlin - Kotlin 协程:包装 cassandra 同步使用与翻译异步使用

这个问题可能也适用于其他库,但使用 Cassandra 作为一个具体的例子来确保我问的是一个可以回答的问题:

使用 Kotlin,我可以使用 Cassandra 的异步方法,然后使用ListenableFuture集成包装它们,或者我可以使用 Cassandra 的同步方法并使用挂起方法和启动/异步包装它们的使用。

我猜测更好的技术是使用库现有的异步方法,假设这样更容易避免死锁并且速度更快,但我在推测并且是协程的新手。

对于更有经验的协同程序的人来说,这是一个明显的答案,还是有“它取决于”的特定领域?