问题标签 [rx-kotlin]

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 回答
1117 浏览

android - AndThen 在完成之前执行

让我们采用 Rx 编写的两种方法:

当我们检查Foo的本地存储时,我想写一个链。如果我们没有任何Foo,我们应该从网络中获取它,然后将其保存到本地存储中,然后再次从本地存储中获取它并将其传递给我们的订阅者。

问题是在可andThen完成传递到flatMapCompletable. 我发现如果我换成Maybe.defer{}. 但是根据andThen 它的文档

返回Maybe将订阅此 Completable 的 a。

也许已经

表示可能值或异常的延迟计算和发射

所以问题是为什么我的andThen部分在完成之前运行。编写这种链的最佳和优雅的方式是什么。

通话记录:

0 投票
1 回答
293 浏览

reactive-programming - 在 zipWith 中使用范围还会在应用拉链功能之前从范围序列中发出所有项目

问题是关于 RxJava2。

Throwable请注意,来自retryWhenwith 的zipping会在应用 zipper 功能之前range发出所有项目。Observable.range此外,range即使zipWith没有被调用,也会发出序列。例如这个源代码

给出以下结果

onError在创建中替换observable也不会消除发射range项目。所以问题是为什么它会像Range冷一样发生。

0 投票
1 回答
749 浏览

rx-java - 如何在 RxJava2 中静默跳过异常?

我有这样的数据流:

我已将业务逻辑(实际上返回Futures)替换为CompletableFuture.supplyAsync. 而且,是的,这就是 Kotlin,但我猜你明白了。

当我评论“死”值(57005, 0xDEAD)时,输出为:

但是,如果该“死”值出现在流中,它将失败:

我是 RX 的新手,所以很快用谷歌搜索了一个解决方案:onExceptionResumeNext: Observable.fromFuture(it)--> Observable.fromFuture(it).onExceptionResumeNext { Observable.empty<Int>() }。但是现在我的应用程序永远挂起(在产生我期望的输出之后)。看起来流永远不会结束。

我应该Observable以某种方式“关闭”它还是什么?或者,更一般地说,在使用 RX 时这是一个好方法吗?我应该以另一种方式重新考虑吗?

0 投票
2 回答
427 浏览

java - 对集合中每个项目的异步调用

我有一个到目前为止我无法解决的问题我是 RxKotlin 的新手,所以它可能很容易。请看一下代码:

其中stream是我们自制的集合。Map 是一种允许您遍历该集合中的每个项目的方法。

这里的问题是

是一个 http 调用,它返回一个不理想的 Single。

我想在 map 中创建一个异步调用,该调用将返回 Item 而不是 Single,然后将其传递给 ClientInfo。到目前为止,我尝试过的是在地图内使用订阅并使用 blockingGet() 方法,但这会阻塞主线程,即使我在不​​同的线程上观察和订阅

所以它涉及对集合中的每一件事进行异步调用。

感谢帮助

0 投票
1 回答
342 浏览

android - 如何在 RxJava 流中间有条件地添加异步操作?

这是我正在尝试做的简化版本(使用 Kotlin 和 RxJava)

如何挤入调用asyncOperation()并使流的其余部分等待其回调触发,但仅在满足特定条件时?这看起来可能是 Rx 中的一个微不足道的操作,但没有明显的解决方案浮现在脑海中。

0 投票
1 回答
534 浏览

android - 使用 RxKotlin 获取 NetworkOnMainThreadException

我正在尝试使用 RxKotlin 发出网络请求,但不断收到NetworkOnMainThreadException我正在订阅主线程的消息,所以我不确定为什么它没有将其从 UI 线程中移除。

这是我订阅 Observable 的地方

这是我创建 Observable 的地方

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 投票
1 回答
256 浏览

android - 添加 subscribeOn() 正在改变 observable 的返回类型

我遇到了一个我很难理解的奇怪问题。我编写了一些从可调用对象创建可观察对象的代码。它编译得很好,但是一旦我为它指定了一个调度程序,它就会改变返回类型并且不会编译。

这是没有 subscribeOn 的代码(编译):

这是带有 subscribeOn 的代码(无法编译):

编译时错误消息是:

当然,指定调度程序不应该改变返回的类型?有任何想法吗?

0 投票
4 回答
34243 浏览

kotlin - 创建 Kotlin 对象的新实例

我有一个对象QuickSort,我正在尝试创建 2 个实例。当我尝试创建 2 个单独的实例时,我可以看到它只使用一个实例,因为我在QuickSort类中有一个不准确的计数。Kotlin 在语法中不使用new,那么我该怎么做呢?

这是我尝试创建 2 个实例的方式。我的目标是让quickSort1quickSort2成为 2 个单独的实例。

尝试的解决方案:将QuickSort从对象转换为类。这仍然导致使用相同的实例,如第二个方法的计数(包括第一次调用计数)所见。

...

0 投票
2 回答
1744 浏览

generics - 如何从通用 observable 订阅 PublishRelay?

科特林代码:

以上是我正在尝试将其转换为 Swift 的 Kotlin 代码。但是,我遇到了一个错误,说无法将“PublishRelay”类型的值转换为预期的参数类型“(Event<_>) -> Void”

SWIFT代码:

任何帮助,将不胜感激。