问题标签 [publishsubject]

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 投票
0 回答
667 浏览

java - RxJava/RxAndroid 中的 PublishSubject 导致崩溃 onError 并跳过 onNext

我有这样的代码:

过程 X:

在 Location 类中是这样的:

PublishSubject 的问题:

  1. 如果我打电话locationPublishSubject.onError( new <some mock exception> )--> 它会崩溃io.reactivex.exceptions.UndeliverableException
  2. 如果我在-->locationPublishSubject.onComplete之后调用,则不会发生。它直接跳到。onNextonNextonComplete
0 投票
0 回答
539 浏览

android - RxJava PublishSubject 没有被执行 onNext

谁能指出我正确的方向吗?我有一个 RecyclerView,它拥有一个有 2 个片段的 ViewPager。所以视图层次结构看起来像这样:

我试图检索每个单选按钮(枚举长值)上的单击,因此我修改了适配器内的 Room DB。

用例的 Gif:

动图

这是我的Open Fragment1代码:

适配器中:

我尝试过使用 Bundles、Shared Preferences、Interfaces 甚至其他 Horizo​​ntal RecyclerView(这个我不确定如何与固定视图一起使用)但我知道性能明智的 RV 更好。

0 投票
1 回答
58 浏览

android - 将领域与 PublishSubject 一起使用

我想将我的领域结果映射到一个不可变的视图模型,并且我想听结果的变化,所以我将它们发布为 PublishSubject,但是,数据不会出现在我的 recyclerview 中,直到我旋转设备,这个问题是当我删除observeOn(AndroidSchedulers.mainThread()).


存储库:

在我的演示者中,我使用这个 observable 将模型映射到视图模型,然后我在片段内的 recyclerview 中显示(订阅时)数据:

概念适配器.handleChanges:


抱歉,如果代码不清楚。


编辑:有时我onBindViewHolder不会被调用(当然,当 recyclerview 为空时)。

0 投票
1 回答
577 浏览

kotlin - RxJava:即使在 onError() 出现错误或重新订阅相同的 Observable 后,如何保持 Observable 活着

实际上我已经创建了一个 RxSearch 类型的配置。我在其中附加了一个带有 PublishSubject 的 Edittext textChangeListener。使用事件将字符发送到 Observable,该 Observable 用作改造 API 调用的输入。

问题

我面临的唯一问题是有时我从可观察的 onError() 回调中的 API“流的意外结束”中得到错误。一旦我得到错误,Observable 就会停止工作。Observable 关闭,无法从 PublishSubject 的 onNext() 中获取字符。

看看RxSearchObservable

我如何在 SwitchMap 中订阅和进行改造 API 调用。

任何想法、帮助、建议将不胜感激。提前致谢。

0 投票
2 回答
3429 浏览

rx-java - RxJava - 即使调用 onNext() 如何阻止 PublishSubject 发布

我看一下我正在调用以下内容:

我想停止发射,但让 while 循环永远继续下去。所以我希望 onNext 调用什么都不做。但我担心如果我调用 myPublishSubject.onComplete() 最终主题将为空,我将获得 NPE。即使 onNext() 被反复调用,是否还有只是为了让它静音。退订是最好的方法吗?

0 投票
0 回答
41 浏览

rx-java - 仅发送通知之类的事件而不一定是对象 [RxJava] 的主题

我有一个用例,我必须从队列中提取请求。当我处理完最后一个请求时,我必须拉一个新请求。看起来我必须使用一个Subject可以帮助我在完成最后一个拉取请求后触发它的事件。我遇到了一个 API PublishSubject,我可以随时在其中继续发布事件,但我需要向主题发送新对象。但我需要用对象类型定义它,然后onNext(<Object>)为下一个事件调用它。我想要的是一个不需要发送任何特定对象并且像通知一样被触发的主题(类似于 onComplete() 的东西)。我怎样才能做到这一点?

0 投票
1 回答
105 浏览

android - PublishSubject 为所有观察者调用昂贵的函数

我有一个特定的场景,我实现了一个 PublishSubject 来根据自定义事件发出项目。对于将要发出的每个项目,我还需要保留该值(一项昂贵的操作)。我想要实现的是拥有一个函数(如map),它将为所有观察者调用一次,然后每个观察者通过该onNext()方法接收的项目。

题目:

触发器(发射项目):

暴露主题(将由控制器使用):

控制器:

订户:

每个观察者都按预期接收项目,但是如果我将昂贵的操作添加到控制器,则会为每个观察者调用此操作(这是我不想要的):

关于如何达到预期结果的任何想法?

0 投票
1 回答
1249 浏览

swift - 调用时 RxSwift 主题未触发事件

我有一个使用MVPCoordinator模式的应用程序。

当子协调器发送和事件时,我希望我AppCoordinator递归调用一个方法,该方法基于 some 选择下一个协调器SessionState

该应用程序的基本流程如下 -

AppCoordinator

  1. start()coordinateToRoot以初始状态调用
  2. 订阅showStartScene()哪个启动子协调器

StartCoordinator

  1. start()创建MVP现在对用户可见的模块
  2. MVP模块调用AuthSvc对 iDP 进行异步调用并确认身份验证状态
  3. 完成此任务后,发布一个由订阅在AppCoordinator'scoordinateToRoot方法中获取的事件,并使用视图状态的适当协调器重复循环。

然而,问题是在发布该事件时,什么都没有发生。start()没有显示它收到了事件,coordinateToRoot也没有被再次调用。

我在下面创建了最基本的版本来演示这一点。我还硬编码showStartScene返回.signedIn而不是查找身份验证状态。

在下面的示例中,我希望一旦加载视图,presenter.signal应该立即发出一个导致打印语句显示的事件。

会话状态

应用协调器

启动协调器

启动 MVP 模块

有趣的是,如果我在这个过程中做这样的事情StartCoordinator确实有效,但它并不是我想要实现的。

供参考,我的BaseCoordinator样子 -

编辑 我添加了一些debug运算符,我可以看到下一个事件和订阅的订单显示为关闭

为什么创建coordinateToRoot后订阅StartPresenter

0 投票
1 回答
599 浏览

android - PublishSubject 不发出项目

为什么下面的代码没有发出任何结果?这出了什么问题Subject?我希望在我订阅的那一刻得到一个结果,即我声明的长度。

0 投票
1 回答
191 浏览

ios - 为什么我的 rx 订阅没有在我的 onNext 上触发?

玩弄Rx Swift我遇到了我subscription没有触发的情况。

我有两个viewControllers。第一个有一个label应该subscriber更新的,像这样:

如果您转到第二个,则viewController有一个触发onNext事件的按钮。像这样:

因此,在我的脑海中,当myButton在第二个中按下时,第viewController一个label中的第一个viewController应该在返回时更新viewController。但是据我所知,该功能已被触发,但subscription根本没有被触发。