问题标签 [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.
java - RxJava/RxAndroid 中的 PublishSubject 导致崩溃 onError 并跳过 onNext
我有这样的代码:
过程 X:
在 Location 类中是这样的:
PublishSubject 的问题:
- 如果我打电话
locationPublishSubject.onError( new <some mock exception> )
--> 它会崩溃io.reactivex.exceptions.UndeliverableException
- 如果我在-->
locationPublishSubject.onComplete
之后调用,则不会发生。它直接跳到。onNext
onNext
onComplete
android - 将领域与 PublishSubject 一起使用
我想将我的领域结果映射到一个不可变的视图模型,并且我想听结果的变化,所以我将它们发布为 PublishSubject,但是,数据不会出现在我的 recyclerview 中,直到我旋转设备,这个问题是当我删除observeOn(AndroidSchedulers.mainThread())
.
存储库:
在我的演示者中,我使用这个 observable 将模型映射到视图模型,然后我在片段内的 recyclerview 中显示(订阅时)数据:
概念适配器.handleChanges:
抱歉,如果代码不清楚。
编辑:有时我onBindViewHolder
不会被调用(当然,当 recyclerview 为空时)。
kotlin - RxJava:即使在 onError() 出现错误或重新订阅相同的 Observable 后,如何保持 Observable 活着
实际上我已经创建了一个 RxSearch 类型的配置。我在其中附加了一个带有 PublishSubject 的 Edittext textChangeListener。使用事件将字符发送到 Observable,该 Observable 用作改造 API 调用的输入。
问题
我面临的唯一问题是有时我从可观察的 onError() 回调中的 API“流的意外结束”中得到错误。一旦我得到错误,Observable 就会停止工作。Observable 关闭,无法从 PublishSubject 的 onNext() 中获取字符。
看看RxSearchObservable
我如何在 SwitchMap 中订阅和进行改造 API 调用。
任何想法、帮助、建议将不胜感激。提前致谢。
rx-java - RxJava - 即使调用 onNext() 如何阻止 PublishSubject 发布
我看一下我正在调用以下内容:
我想停止发射,但让 while 循环永远继续下去。所以我希望 onNext 调用什么都不做。但我担心如果我调用 myPublishSubject.onComplete() 最终主题将为空,我将获得 NPE。即使 onNext() 被反复调用,是否还有只是为了让它静音。退订是最好的方法吗?
rx-java - 仅发送通知之类的事件而不一定是对象 [RxJava] 的主题
我有一个用例,我必须从队列中提取请求。当我处理完最后一个请求时,我必须拉一个新请求。看起来我必须使用一个Subject
可以帮助我在完成最后一个拉取请求后触发它的事件。我遇到了一个 API PublishSubject
,我可以随时在其中继续发布事件,但我需要向主题发送新对象。但我需要用对象类型定义它,然后onNext(<Object>)
为下一个事件调用它。我想要的是一个不需要发送任何特定对象并且像通知一样被触发的主题(类似于 onComplete() 的东西)。我怎样才能做到这一点?
android - PublishSubject 为所有观察者调用昂贵的函数
我有一个特定的场景,我实现了一个 PublishSubject 来根据自定义事件发出项目。对于将要发出的每个项目,我还需要保留该值(一项昂贵的操作)。我想要实现的是拥有一个函数(如map
),它将为所有观察者调用一次,然后每个观察者通过该onNext()
方法接收的项目。
题目:
触发器(发射项目):
暴露主题(将由控制器使用):
控制器:
订户:
每个观察者都按预期接收项目,但是如果我将昂贵的操作添加到控制器,则会为每个观察者调用此操作(这是我不想要的):
关于如何达到预期结果的任何想法?
swift - 调用时 RxSwift 主题未触发事件
我有一个使用MVP
该Coordinator
模式的应用程序。
当子协调器发送和事件时,我希望我AppCoordinator
递归调用一个方法,该方法基于 some 选择下一个协调器SessionState
。
该应用程序的基本流程如下 -
AppCoordinator
start()
coordinateToRoot
以初始状态调用- 订阅
showStartScene()
哪个启动子协调器
StartCoordinator
start()
创建MVP
现在对用户可见的模块MVP
模块调用AuthSvc
对 iDP 进行异步调用并确认身份验证状态- 完成此任务后,发布一个由订阅在
AppCoordinator
'scoordinateToRoot
方法中获取的事件,并使用视图状态的适当协调器重复循环。
然而,问题是在发布该事件时,什么都没有发生。start()
没有显示它收到了事件,coordinateToRoot
也没有被再次调用。
我在下面创建了最基本的版本来演示这一点。我还硬编码showStartScene
返回.signedIn
而不是查找身份验证状态。
在下面的示例中,我希望一旦加载视图,presenter.signal
应该立即发出一个导致打印语句显示的事件。
会话状态
应用协调器
启动协调器
启动 MVP 模块
有趣的是,如果我在这个过程中做这样的事情StartCoordinator
确实有效,但它并不是我想要实现的。
供参考,我的BaseCoordinator
样子 -
编辑
我添加了一些debug
运算符,我可以看到下一个事件和订阅的订单显示为关闭
为什么创建coordinateToRoot
后订阅StartPresenter
?
android - PublishSubject 不发出项目
为什么下面的代码没有发出任何结果?这出了什么问题Subject
?我希望在我订阅的那一刻得到一个结果,即我声明的长度。
ios - 为什么我的 rx 订阅没有在我的 onNext 上触发?
玩弄Rx Swift
我遇到了我subscription
没有触发的情况。
我有两个viewControllers
。第一个有一个label
应该subscriber
更新的,像这样:
如果您转到第二个,则viewController
有一个触发onNext
事件的按钮。像这样:
因此,在我的脑海中,当myButton
在第二个中按下时,第viewController
一个label
中的第一个viewController
应该在返回时更新viewController
。但是据我所知,该功能已被触发,但subscription
根本没有被触发。