问题标签 [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.
javascript - Angular2:RxJS 主题未响应事件
我维护一个从对象数组生成的表,其中单击一行将给出一个包含该特定行数据的对象。我需要与所有其他组件共享它,无论它是父级、子级或兄弟级因此我使用主题,类似于https://embed.plnkr.co/P8xCEwSKgcOg07pwDrlO/。我面临的问题是,在单击时,我认为事件没有被发出,因此我看不到其他组件中没有任何反映。请让我知道我哪里出错并帮助解决。我的代码如下:
患者列表.component.ts
病人服务.ts
病人组件.ts
angular - 不能在 Observables 上调用 .next
我正在使用注射剂在两个兄弟组件之间共享数据。在我的注射剂中,我正在使用这样的可观察对象:
但是当我使用 Subject 代替 Observable 时,它可以正常工作。我想使用 Observable 而不是 Subject,这可能吗?我是响应式编程的新手,我很困惑。
wpf - Rx.NET 主题的阻塞问题
在 WPF 应用程序中,我Observable.Throttle()
用来限制处理来自用户界面的某些事件的频率。
这是与 Rx 的使用有关的最小简化代码:
这通常运作良好并解决了我们之前遇到的种族问题。但是,在某些时候,即使事件发生的频率很低,这也会锁定在subject.OnNext()
. 此时在 Visual Studio 中暂停显示以下相关调用堆栈:
我假设/希望根本原因是我对 Rx 的使用非常天真/缺乏经验。我尝试同步主题,我记得这帮助我解决了另一个地方的问题,但这并没有改变这里的行为。我也尝试过SubscribeOn()
/ ObserveOn()
,但没有真正的计划或运气。
我用错了主题吗?我应该使用不同的主题类型吗?我应该使用一个主题吗?(由于实际代码的复杂性,通过 Rx 直接附加到视图中的事件并合并流似乎不可行。)
感谢您的任何指点!
angular - 如何使用 Observables 进行组件间通信
我正在使用来自 Rxjs 的 Observables 和 Subjects 在两个组件之间进行通信,这是服务部分:
但是当我从后端接收数据时,我会调用主题的下一个方法,并在另一个组件的构造函数中再次调用它。它不起作用,而我已经看到它起作用的例子。该服务已在全球范围内注入。
angular - 组件订阅看不到带有 Subject Observable 调用 next() 的 Angular 服务
我想从 Angular 服务中检索更新的对象值(借用者)。我Subject
在 Service 中创建了一个 RxJS,以便多个组件可以订阅它并获取更新的值。
当我通过组件中提供的服务订阅 Subject 时,我发现onNext()
即使.next()
从 BorrowerService 调用函数参数也永远不会被调用。
如果我确实在 BorrowerService 类中进行了订阅,我发现它.next()
按预期工作。似乎 Subject 是调用的 Service 类.next()
和组件之间的不同实例,因此没有获得该订阅。
这是理解 Angular 服务或 Observable 的失败吗?如何在不知道何时调用的情况下更新 Service 中的值并被动获取 Component 中的更改.next()
?
借款人报告.component.ts
借款人.service.ts
angular - 如何将同一个 observable 与多个映射一起使用?
我的代码有一个Subject
which,当添加新值时会触发一个 HTTP 请求,该请求返回一个Observable
.
我想以两种不同的方式处理这些数据(使用相同的数据),并将结果Observables
存储在group
和作为使用管道times
放入的值。ngFor
async
虽然这确实有效,但 HTTP 请求会发送多次 - 我只希望每个订阅发送一次。
下面是一个最小的例子。
实现这一目标的最佳方法是什么?
angular - 如何在运行初始化代码之前等待订阅模板中的可观察对象(使用异步管道)?
我有一个 HTTP 服务,它在将给定的项目 ID 传递给它时返回一些信息。这是通过 a 完成的Subject
,它在 thenngOnInit
方法中接收第一条数据。
然后我使用async
管道以 HTML 格式显示服务返回的数据。
我的问题是async
管道在我使用第一个项目 ID 调用时尚未订阅可观察selections.next
对象 - 因此在初始化时不会显示这个。
在我将第一条数据发送给主题以开始第一个 HTTP 请求之前,我如何才能等到async
管道订阅?Observable
我尝试了不同的生命周期挂钩,但似乎都没有奏效。
angular - 当 localStorage 中的特定键发生更改时通知其他组件 - Angular
我的问题很笼统。我想观察 localStorage 的角度变化,但 localStorage 中的每个键都需要单独观察。
例如,我在 localStorage 中有一些产品列表,_products_
比如说,它存储了一系列产品。现在,每当我添加新产品并将其附加到_products_
localStorage 中的键时,我希望其他组件知道_products_
已修改。
这里有一个解决方案,但它会监视 localStorage 中的所有键。
感谢你的帮助。谢谢。
javascript - Angular 4 RxJs Observable Subjects 数组未使用新对象更新
所以最近我了解了主题,我正在尝试在个人项目中使用它们。我有一个从 json 文件中获取数据并将其转换为“文章”类型的服务。Article 是一个自定义类,用于保存有关博客文章的信息。
我的最终目标是获取这个文章数组,然后当我按下 + 按钮时,它会在当前列表中添加一个新的空白文章,并且视图应该通过显示具有一些默认值的空白文章来表示它。这不会保留(保存到 json)新的空白文章,而只是将其添加到当前列表中,以便视图更新并显示它。储蓄将在稍后到来。
我一辈子都无法让它发挥作用。所有文章都正确显示在我的“文章列表”页面上,但手动将一个空白推到它似乎根本没有做任何事情。
这是我的服务文件
我有一个列表组件更新列表,如下所示:
以及创建新空白文章的另一个组件:
我可以调试,并且服务上的 this.articles 属性似乎已更新为新的空白文章,但视图没有改变,我无法确定,但似乎该文章很快就丢失了无论如何,只要它添加。observable 是否重复了 http get 并再次清理了文章列表?
angular - 如何在主题中只保留一个参数?
从控制器我向主题输入参数
从我的组件importacion.component.ts
中我订阅了这个主题
现在一切都很好,但是当我关闭 importacion.component.ts 的对话框并再次执行此操作时,主题会创建第二个 suscbripcion 并因此创建 2 个观察者,然后当我使用 .next() 输入新数据时,订阅者会运行两次。
我该如何控制这种行为,我的预期行为是只存在于我的主题中并提供参数,并且仅在其值更改时运行