问题标签 [rx-kotlin2]

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

android - 如何判断 mergeDelayError 中的哪些 Completable 没有在超时时发出信号

我有这个 Android Kotlin 代码,其中包含一个 Completables 列表,这些 Completables 合并成一个更大的mergeDelayError(),有一个超时。达到超时时,我得到java.util.concurrent.TimeoutException: The source did not signal an event for 250 milliseconds and has been terminated.

我如何知道列表中的哪一个小可完成项在没有发出任何信号/发出任何信号的情况下达到了超时(实际列表有两个以上的 BTW)。我理想的解决方案是将此类异常替换为:Exception: The following operations reached a timeout: Check initial settings, Check server,或者至少每个超时可完成打印输出的特定日志行。

我不知道该怎么做。我的第一个猜测是简单地为每个可完成添加一个“didEmit”标志,并在大可完成上达到超时时逐个检查它们,但这对我来说似乎是一个糟糕的解决方案。

任何想法表示赞赏。谢谢你。

0 投票
3 回答
114 浏览

kotlin - 映射选项时使用 RxKotlin 出现意外的 NullPointException

首先,我有以下 Moshi json。

除 serverId 外,所有这些字段都应包含数据。这些数据是从我可以允许用户选择订单的服务器中获取的。

当我映射到上面的 serverId 时,我遇到了 NPE。有趣的是,地图(即使它是可选的)之后会进行不安全的强制转换。我希望它在地图之后保持可选性。我假设这是因为向后桥接 RxJava。好奇是否有人对这是为什么有进一步的解释。

0 投票
0 回答
112 浏览

error-handling - 错误没有从 rxjava zip 函数中的 observables 冒泡

我试图了解 rxjava 中的错误处理。我想如果我在一个 zip() 函数中组合一个 observables 流,那么 zip 中的 observables 发出的错误会破坏序列并冒泡到订阅者 onError 函数。然而,唯一捕获的错误是 BiFunction 中发出的错误。链上发出的错误会导致系统崩溃。当我将 onErrorReturn 添加到可观察对象并返回后备值时,系统仍然崩溃。所以对我来说,这并不像我预期的那样工作。我错过了什么?

0 投票
0 回答
100 浏览

java - 为什么我会收到 UndeliverableException

在 android 应用程序中,过程是这样的:首先,我从本地 SQLite 获取笔记,然后为每个笔记进行 Http 调用。我使用复合一次性用品来容纳所有一次性用品,并在活动被破坏时释放它们。代码看起来像这样:

这段代码运行良好,直到互联网连接丢失。因此,每次在方法getUpdateStateObservable中进行 HTTP 调用时都会引发错误。有时它会导致io.reactivex.exceptions.UndeliverableException指向getUpdateStateObservable发生网络错误的行。有时它不是。我试图Schedulers.single()在发出 HTTP 请求时不使用线程池,而是使用单个线程池。这很好用。但是,我想同时处理所有这些请求以加快它们的速度。

谢谢

0 投票
1 回答
67 浏览

rx-java2 - 订阅 2 个可观察对象,但仅在第一个条件为真时订阅第二个

我有以下内容,我订阅了 2 个 observables,它工作正常。我不认为这是最好的方法。

getSalesInfo如果第一个getProductDetails满足条件,我只想订阅第二个。这只是我正在尝试做的一个示例。如果条件不满足,则不会发生任何事情。

我发现的另一种选择是使用flatmap它将返回第二个SaleInfoobservable。我必须在看起来不正确的 else 条件下返回一个空的 Observable。有没有更好的办法?

非常感谢您的任何建议

0 投票
1 回答
155 浏览

android - Android KotlinRx API 在后台连续调用

我是 Rx 的新手,我正在使用 Rx 进行一次 API 调用。它正在工作,但问题是它在我收到响应或错误后不断地制作 API。我正在使用 MVVM 模式。

这是我在视图模型中观察结果的代码:

收到响应或错误后如何停止观察?我错过了什么吗?

如果我不停止这种持续的调用,那么它会进行太多的 API 调用并且服务器开始返回:

禁止 HTTP 403

0 投票
1 回答
76 浏览

android - RxJava ConcatArrayDelayError 和过滤器:仅当两个源都失败时才返回错误

我是 RxJava 的新手,在尝试了我在网上可以找到的所有东西几天后,我发现我真的需要帮助。

我在我的存储库中获取一个包含本地和远程源的成员。我添加了一些运算符以优先返回我的远程源(通过去抖动),并过滤掉错误,因此如果远程不可用或数据库为空,它将仅返回 2 个中的 1 个。

只要我的 2 个来源之一返回了某些内容,它就可以正常工作,但是如果两个来源都返回错误,则会出现问题:当我过滤掉错误时,它不会返回任何内容,并且永远不会调用我的订阅。

也许有一个简单的解决方案,但到目前为止我还没有找到,有人可以帮忙吗?

这是我的存储库中的 fetchMember():

这是我的视图模型:

0 投票
1 回答
136 浏览

android - 如何使地图等到当前索引项完成处理,然后使用 RxJava 获取下一项进行处理?

我正在尝试将输入流转换为文件。因此,当用户选择 1 张图片时,一切正常。但是当用户选择多个图像时,例如 4 则下面的代码无法按预期工作;我在 Log 语句中只看到 2 个文件路径。

这是 saveInputStreamToFile 方法

我希望仅在当前输入流转换为文件后才采用下一个输入流。如何做到这一点?请帮忙

0 投票
1 回答
175 浏览

kotlin - 发布主题的订阅者收到的事件顺序

我有一个包含多个订阅者的发布主题:

这是课程:

我打电话doSubscribe()之前我打电话doPublish() 输出如下:

根据上述程序,第一个订阅者首先收到事件,然后是第二个和第三个,这完全按照订阅的顺序。

这个执行顺序有保证吗?因为我无法找到有关此的相关文档。

0 投票
1 回答
467 浏览

rx-java2 - 如何在向外部服务请求时处理异常并在 Micronaut 过滤器中相应地返回状态

所以我对 rx-java/rx-kotlin 完全陌生,直到我在 Micronaut 中编写 HTTP 过滤器(https://docs.micronaut.io/latest/guide/index.html# filters)这让我措手不及,因为我只做了常规的 JAX-RS 过滤器。

所以在做了一些试验和错误之后,我想出了这个。

代码被重写,但点仍然存在。这里有一些改进的空间。

我想做的是改进异常处理并在抛出异常的情况下返回 500(例如,如果remoteClient无法访问所调用的远程服务。我怎样才能做到这一点?我没有其他任何东西除了上面的解决方案之外的工作,为下一个观察者返回一个空列表。