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

kotlin - 生产者内部的侦听器

我正在尝试producer为听众创作。我的代码看起来像这样

但是我遇到了错误Suspension functions can be called only within coroutine,这是有道理的。我的问题是。有没有办法使用协程来实现这种模式?

0 投票
1 回答
369 浏览

kotlin - 如何在 Kotlin Spek 测试中组织多个协程和期望块?

it我写了一个失败的 Spek 测试,因为我对涉及多个协程和函数 的执行顺序做出了错误的假设:

我期望abcd被打印,但acbd实际上被打印了。

我应该如何编写这个测试,以便它可以按预期的顺序进行视觉读取和执行?

0 投票
1 回答
1138 浏览

kotlin - Kotlin 演员之间的交流

可以向演员发送消息,actor.send()或者actor.offer() 一旦我的演员从其频道获得消息,我想返回响应。我该怎么做呢?我没有看到任何明显的内置方法。

0 投票
2 回答
1032 浏览

kotlin - Spring sleuth zipkin 跨越不嵌套在 Kotlin 协程中

我可以从以下 Spring Boot 控制器代码中看到跨度记录在 Zipkin UI 中:

日志输出如下所示:

但跟踪在 UI 中是独立的。

我希望对 Google 和 Facebook url 的两个调用同时嵌套在对/concurrent1端点的调用下。

我怀疑这是由于执行协程的线程与启动 Spring 应用程序的线程不同,但我现在不知道如何继续使用 Spring Sleuth!

0 投票
1 回答
692 浏览

kotlin - 无法执行kotlin协程(无此方法异常

我从 kotlin 示例中获取了这个简单的代码片段:

当我尝试运行它时,它会抛出

我使用kotlinVersion = '1.1.51'

有什么建议吗?

0 投票
6 回答
70108 浏览

kotlin - 带有返回值的 Kotlin 协程

我想创建一个具有返回值的协程方法。

例如)

如果我想以 sum 方法返回总计,我该怎么做?

像,

0 投票
2 回答
959 浏览

android - 如何在 Java 中轻松使用 Kotlin 通道生产者?

作为开发新 API 的一部分,我正在学习使用 Kotlin。最初我希望在 Java (Android) 项目中使用 Kotlin API,但从长远来看,我希望完全采用 Kotlin。

作为改进长期运行过程的实现的一部分,我想使用协程。具体来说,包中的频道生产者kotlinx.coroutines

例如:

在 Java 中使用它的最佳方法是什么?我可以向 Kotlin 和/或 Java 添加临时的“帮助”函数。

0 投票
2 回答
2020 浏览

kotlin - 为什么在 Kotlin 中无法使用方法引用来引用 `suspend` 函数?

我有一个Job实例列表,我想在启动后的某个时候取消这些实例。这看起来如下:

不幸的是,这里不可能使用方法参考。原因:cancelAndJoin是一个suspend函数,正如编译器抱怨的那样:

“错误:(30, 24) Kotlin:不支持 [对挂起函数的可调用引用]”

为什么这不起作用?

0 投票
1 回答
760 浏览

android - Android 中的 Kotlin 协程:为什么使用 Anko 的 bg() 而不是 async()?

我今天开始在 Android 上使用 Kotlin 协程,我注意到 Anko 有一套自己的辅助方法。我理解为什么asReference()存在,但我不知道为什么会存在,bg()因为核心协程库已经有了async().

bg()代码非常简单,它在async()内部使用:

那么使用bg()而不是有什么好处async()呢?async()Android应用程序在某种程度上效率低下吗?

0 投票
1 回答
1062 浏览

android - 使用 Anko Coroutines 扩展的正确方法是什么?

所以我正在将一个示例应用程序从 RxJava 迁移到 Kotlin/Anko Corountines,我想知道我是否正在做最好的(第一个)方法:

我正在使用 MVP 架构,其中我的Presenter基类有一个CompositeSubscription并且在onDestroy's 片段或活动方法中简单地取消订阅并清除CompositeSubscription对象。但是我想知道asReference()Anko Coroutines 中的函数是否也一样,并且不需要保存列表Deferred<T>然后对其进行迭代并一一取消。

顺便说一句,如果我添加一个Thread.sleep(5000)来模拟大事务并销毁片段,我可以在 logcat 中看到 HTTP 响应,即使片段不可见/被破坏,而 RxJava 不会发生,所以我认为我没有正确使用。

更新

我可以在调用方法时取消协程,job.cancel()onDestroy()要使其正常工作,我必须检查作业是否处于活动状态,并将其转换为 if/else 和返回或不返回数据。取消工作后有没有更好的方法来退货?