问题标签 [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.
android - 无法使用 Mockito 测试使用协程和挂起函数的代码
我正在尝试使用 MVP 编写一个应用程序,并调整我以前用 Java 编写的异步存储库模式以使用 Kotlin 的挂起函数。但是,我无法正确测试使用挂起函数的代码。我得到的进一步是让测试运行并失败,因为我认为模拟没有返回它应该返回的对象,而是返回 null 。
这是一个显示问题的小应用程序:
UserRepository
(该方法getUser()
在返回虚拟用户和抛出异常之间交替):
风景:
主持人:
和测试:
哪个输出...
我已经尝试了很多东西,但我仍然无法使用 Kotlin 中的挂起函数/协程编写可测试的 MVP 应用程序。连这么简单的一个都做不到。我在这里想念什么?
android - 使用 kotlin 协程测试加载和错误状态
有没有办法让我模拟一个挂起函数,这样它就不会发出数据或者它会发出错误。使用 RxJava 2,我可以模拟该函数以返回 Observable.error 或 Observable.never,但我在 kotlin 协程中找不到等效功能。这是需要模拟的功能。
从我的 viewModel 我以这种方式调用挂起函数
在该视图模型的测试类中,我想模拟执行函数,使其永远不会返回数据,这样我就可以测试传递给 liveData 的数据是否是我所期望的。在 RxJava 中,我可以模拟返回 Observable.never() 和 Observable.error() 的函数。但是对于协程,我迷失了寻找模拟它的方法。
kotlin - 如何触发 CompletableDeferred 的 onAwait 函数?
我正在尝试在创建图像时对其进行索引。我认为这很容易:
但它说Expression onAwait of type SelectClause1<String> cannot be invoked as a function
所以也许我用错了?有没有办法注册 CompletableDeferred 完成时要调用的函数?
kotlin - Kotlin 等待 Channel.isClosedForReceive
打电话后Channel.close()
等待Channel.isClosedForReceive
成为真的最好的方法是什么?
我正在按顺序处理消息,并希望返回调用后处理的最大消息Channel.close()
。但是,如果我只是在调用后获取最大处理消息,close()
则在消耗“关闭令牌”之前通道中可能有一些消息,导致实际最大处理消息大于返回的值。
基于文档,Channel.close()
我认为 Channel.isClosedForReceive 是我应该等待的。但我期待一些挂起功能等待,而不是不得不轮询它的状态。
java - 在 intelliJ 项目中集成 Kotlinx 协程
我现在正在使用 intellij 一段时间。在那里我从事一个javaFx 项目,该项目主要是用 java 编写的,但我发现 Kotlin 是一个不错的选择。
最近我读到了 Kotlin 中的协程,但我不知道如何将 Kotlinx 库添加到我的项目中。我只能找到 maven 和 gradle 的片段。但是我在这方面完全是nobby,我不使用其中之一(至少我是这么认为的)。那么如何将 kotlinx 的东西添加到我的项目中???
Kotlinx: KotlinX 协程
kotlin - kotlin 协程。启动{乐趣}和启动{暂停乐趣}之间的区别
执行上有区别吗?
和
kotlin - Kotlin Coroutines 的“Async/Await”的非暂停版本是什么?
是否有.await()
可以在 a 的挂起函数之外调用的版本Deferred<T>
?我想阻止当前线程直到Deferred<T>
返回。
kotlin - 如何在 Kotlin 协程接收通道上实现 RxJava 的 combineLatest?
我需要.combineLatest()
在 a 上实现以下扩展功能ReceiveChannel
我希望它像 RxJava 的combineLatest()
.
我怎样才能做到这一点?
编辑:到目前为止我有这个,但它不工作。该sourceB.consumeEach{ }
块永远不会被执行。
我还想确保当ReceiveChannel<R>
此函数返回的关闭(取消订阅)时,我想确保父频道正确关闭。
kotlin - 关闭 ExecutorCoroutineDispatcher 的底层 Executor
我反复发现自己编写代码是这样的:
我真正需要的只是协程调度程序,所以我可以编写类似的东西
或者
我需要threadPoolExecutor
能够在清理时关闭它。有没有办法使用协程调度程序实例来关闭它?
kotlin - 延迟 Kotlin 的 buildSequence 的推荐方法是什么?
我正在尝试轮询分页 API 并在用户出现时向用户提供新项目。
这是示例用法:
我的第一个想法是使用该delay
功能,但我收到以下消息:
受限挂起函数只能在其受限协程范围内调用成员或扩展挂起函数
这是签名buildSequence
:
我认为这条消息意味着我只能使用suspend
SequenceBuilder: 中的函数,yield
并且不允许yieldAll
使用任意函数调用。suspend
现在我正在使用它来阻止每次轮询 API 后一秒钟的序列构建:
这行得通,但它似乎真的不是一个好的解决方案。有没有人遇到过这个问题?