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

kotlin - 为什么 CoroutineExceptionHandler 没有捕获/处理我的异常?

在这段代码中,为什么handler只打印堆栈跟踪JobCancellationException而不是SocketException?里面的foo函数launch肯定是 throws SocketException,那么它会发生什么?

0 投票
1 回答
507 浏览

android - 测试暂停 corotuine

我正在尝试使用协程来处理我的登录服务的异步代码。不幸的是,登录服务的实现必须在完成时接受回调。login()在这些回调之一发生之前​​,我不希望此函数完成。

这是我所拥有的:

我的问题是我的测试永远不会完成。我认为正在发生的事情是延续块本身没有运行。我也尝试将调用包装uut.login()在 runBlocking 中,但没有帮助。这是我的测试代码(使用 Spek):

基本上,我想断言该login()方法根据发生的情况返回了 SUCCESS 或 FAILURE 结果。

有任何想法吗?

0 投票
1 回答
1406 浏览

android - 协程处理程序类似的行为

在我的应用程序的一部分中,我将 runnable 发布到 Handler,然后内部的代码run()执行并将相同的 runnable 发布到 Handler postDelayed()。这会创建类似循环的东西。这种行为可以通过协程实现吗?我尝试使用频道,但无法正常工作。

0 投票
1 回答
418 浏览

android - 协程 Android 4.1:阻塞队列后后续启动不起作用

如果我运行一个launch带有阻塞队列的阻塞,那么launch之后就不会运行其他的了。这只发生在 Android 4.1 上,我用 Android 6.0.1 和 7.0 测试过的其他设备工作得很好。这是一个例子:

输出:

TEST 3从不记录。但是,如果我用 替换“阻塞” launchthread它就可以工作。

如果我通过在队列上放置一个元素来解除对队列的阻塞,那么其余的启动现在就会运行。

输出:

任何想法为什么会发生这种情况以及如何解决它?

0 投票
1 回答
399 浏览

kotlin - 这个 takeWhileInclusive 的实现安全吗?

我发现了以下包容性的实现takeWhile(在此处找到)

问题是我不是 100% 相信如果在并行序列上使用这是安全的。

我担心的是我们会依赖shouldContinue变量来知道何时停止,但我们并没有同步它的访问。

有什么见解吗?

0 投票
1 回答
1217 浏览

kotlin - 没有 ReactiveCrudRepository 的 WebFlux 和 Kotlin 协程

我正在开发一个使用 Kotlin、Spring Boot、Hibernate(全部在最新版本上)的项目,我想让它与 Spring 的 WebFlux 框架反应。

问题是我不能使用ReactiveCrudRepository,因为 Web 应用程序必须使用 Oracle 数据库,因此需要使用 Hibernate。所以我想不出如何使用非阻塞访问 Oracle SQL 数据库(仅限免费框架)的方法。

我的问题是:

是否可以这样使用:

  • CrudRepository阻塞的休闲
  • 使用 corountines 并将所有内容返回为的服务Mono

服务示例代码:

之后将有控制器:

这种方法有效,但我不确定它是否会一直有效,以及这是否不是糟糕的做法等等。

0 投票
1 回答
273 浏览

intellij-idea - KotlinJS 1.2 不支持 Launch-Coroutine 和其他?

我目前正在 node.js 上为我的 kotlin-js 项目尝试协程。

我正在使用 IntelliJ-Idea 和 kotlin 插件 1.2.40

应该支持协程,是吗?但是IDE没有找到“启动”-协程?!

另一方面,找到了命名空间 kotlin.coroutines.experimental,我可以使用例如 suspendCoroutine 函数,但实际上应该可用于协程的功能并不多。

0 投票
2 回答
3559 浏览

kotlin - Kotlin - How to read from file asynchronously?

Is there any kotlin idiomatic way to read a file content's asynchronously? I couldn't find anything in documentation.

0 投票
4 回答
6472 浏览

android - 如何将 Android 任务转换为 Kotlin Deferred?

Firebase 匿名登录返回一个任务(基本上是Google 承诺实现):

如何创建一个signInAnonymous包装器,其中:

  • 是一个suspend函数,等待task完成

    • suspend fun signInAnonymous(): Unit
  • 它返回一个Deferred对象,异步传递结果

    • fun signInAnonymous() : Deferred
0 投票
1 回答
2032 浏览

intellij-idea - 协程工作但 IntelliJ 显示错误

我正在开发一个使用kotlinjs for nodejs的项目,我开始学习协程并将它们集成到我的代码中,以告别回调地狱。

我设法让协程工作,我的代码可以编译和执行,一切似乎都很好

...除了:IDE 仍然显示错误。我为了让协程运行而添加的其他库似乎让我感到困惑。

我目前正在摆弄库依赖项,有时一些错误消失了,但随后一些代码变红了,这在之前还可以......

这就是我所看到的:

情况1:

第一种情况下的模块依赖关系 第一种情况下的代码

无法访问类 'kotlinx.coroutines.experimental.CoroutineContext'。检查您的模块类路径是否存在缺失或冲突的依赖项

案例二:

第二种情况下的模块依赖关系 第二种情况的代码

未解决的参考:JsModule

修饰符“外部”不适用于“类”

你看,launch当我添加 时被识别stdlib,但是 IDE 抱怨其他两个错误。

再次请注意:在这两种情况下,实际编译都是成功的!

我正在使用IntelliJ 2018.1Kotlin Plugin 1.2.41