问题标签 [subject-observer]
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 - FlatMap 和主题 - 如何避免重复订阅者?
假设我有以下代码:
它产生的输出是:
不断地。
我理解它为什么会发生 - 这是因为每次flatMap
调用时,都会将新订阅者添加到subject2
.
问题是 - 如何避免这种情况?
angular - Angular 2.0.1 AsyncPipe 不适用于 Rx 主题
AsyncPipe 与 BehaviorSubject 一起使用,但我不想用空数据初始化我的服务,因此我使用 Subject intead。
问题是 NgFor 和 asyncPipe 不适用于 Subject,这是一个问题吗?
这有效:
零件:
模板
这不起作用:
零件
模板
angular - Angular2路由器不改变组件
我有 1 个组件,我想为不同的路由器链接重用它们的路由如下所示:
该组件需要从每个路由器链接的不同位置获取。问题是组件订阅了一项服务,现在每次我导航到不同的路由器链接时,订阅都会叠加。我该如何解决这个问题?
spring - 在不同的线程 rxJava 上运行 PublishSubject
我正在运行 RxJava 并创建一个主题以使用onNext()
方法来生成数据。我正在使用Spring。
这是我的设置:
在 RxJava 流上生成新数据的方式是通过@Autowire private SubjectObserver subjectObserver
然后调用subjectObserver.publish(newDataObjGenerated)
无论我为subscribeOn()
&指定什么observeOn()
:
- 调度程序.io()
- Schedulers.computation()
- 我的主题
- Schedulers.newThread
它onNext()
和它里面的实际工作是在同一个线程上完成的,这个线程实际上调用onNext()
了主题来生成/产生数据。
这个对吗?如果是这样,我错过了什么?我期待在doSomething()
不同的线程上完成。
更新
在我的调用类中,如果我改变调用publish
方法的方式,那么当然会分配一个新线程供订阅者运行。
谢谢,
angular - Angular2:Angular2子父组件交互中的rxjs Subject
我想手动订阅由指令发出的事件,根据设计,它应该可用于我的应用程序的多个组件。目前结构如下:
app.module看起来像这样:
在开发的后期,另一个 Parent 组件将监听可拖动指令并实现自己的逻辑。
没有一个子组件知道(或应该关心) Draggable Directive 对它做任何事情。父组件应该。因此,在父组件中:
这是指令,使用 Subject 而不是 EventEmitter,正如其他地方所推荐的:
我得到带有正确值的控制台日志“发射”。我从来没有从控制台的父组件中得到“监听”。我在这里做错了什么?
javascript - 如何在 RxJs v5 中从 Subject 创建 Observable 而不将 Subject 暴露给消费者
我正在尝试从内部使用 Rx.Subject 的函数返回一个可观察对象。当然,与任何好的 API 一样,实现细节应该完全从消费者那里抽象出来。但是,使用 Subject.asObservable() 似乎任何消费者都可以向所有观察者发出新值。
例子:
所以我的问题是,有没有一种内置的方法可以将 Observable 暴露给消费者而不让他们访问原始主题?如果不是,这显然是 RxJs 的糟糕设计。
注意:这是针对 RxJS v5
angular - Angular2 - 即使在取消订阅后,Rxjs 主题也会运行两次
我正在使用 angular2 和 electron 编写一个桌面应用程序,并且有一个下载功能。
我DownloadService
的是这个
我ItemComponent
的是这样的:
问题是当我暂停一个我取消订阅的项目Subject
时DownloadService
,当我再次恢复时,每次console.log()
打印两次并将两次数据添加到downloadedBytes
. 此外,如果我再次暂停并恢复,它将添加越来越多的字节和日志!
我搜索了但我找不到任何线索来解决。
c# - Reactive Observable Subscription:停止订阅和续订
我有一个来自 BlockCollection 的 Observable,我像队列一样使用它
并订阅他:
现在我有另一个 Observable:
我想当 OnTimerNextSubscribe开始停止订阅_subscription并在 OnTimerNextSubscribe 完成时更新它。
最好的做法是什么?
我应该处置_subscription并调用StartSubscription()
javascript - 具有布尔值的 BehaviorSubject 未按预期工作
我已经实现了一个简单的BehaviorSubject
,
现在运行时stStatus()
会在控制台上显示以下输出。
虽然我期望值
我的实施有什么问题?
rxjs - 在 ngrx 中获取当前状态
这是在 ngrx 中获取当前状态的解决方案。这个例子很简单——你只需使用take(1)
. 但是在它的 rxjs 文档中take
说:
从可观察序列的开头返回指定数量的连续元素
为什么取第一个值会得到当前状态(即最后一个值)?
此外,我在使用Subject
.