问题标签 [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.

0 投票
1 回答
312 浏览

javascript - Angular2:RxJS 主题未响应事件

我维护一个从对象数组生成的表,其中单击一行将给出一个包含该特定行数据的对象。我需要与所有其他组件共享它,无论它是父级、子级或兄弟级因此我使用主题,类似于https://embed.plnkr.co/P8xCEwSKgcOg07pwDrlO/。我面临的问题是,在单击时,我认为事件没有被发出,因此我看不到其他组件中没有任何反映。请让我知道我哪里出错并帮助解决。我的代码如下:

患者列表.component.ts

病人服务.ts

病人组件.ts

0 投票
1 回答
79 浏览

angular - 不能在 Observables 上调用 .next

我正在使用注射剂在两个兄弟组件之间共享数据。在我的注射剂中,我正在使用这样的可观察对象:

但是当我使用 Subject 代替 Observable 时,它​​可以正常工作。我想使用 Observable 而不是 Subject,这可能吗?我是响应式编程的新手,我很困惑。

0 投票
0 回答
108 浏览

wpf - Rx.NET 主题的阻塞问题

在 WPF 应用程序中,我Observable.Throttle()用来限制处理来自用户界面的某些事件的频率。

这是与 Rx 的使用有关的最小简化代码:

这通常运作良好并解决了我们之前遇到的种族问题。但是,在某些时候,即使事件发生的频率很低,这也会锁定在subject.OnNext(). 此时在 Visual Studio 中暂停显示以下相关调用堆栈:

我假设/希望根本原因是我对 Rx 的使用非常天真/缺乏经验。我尝试同步主题,我记得这帮助我解决了另一个地方的问题,但这并没有改变这里的行为。我也尝试过SubscribeOn()/ ObserveOn(),但没有真正的计划或运气。

我用错了主题吗?我应该使用不同的主题类型吗?我应该使用一个主题吗?(由于实际代码的复杂性,通过 Rx 直接附加到视图中的事件并合并流似乎不可行。)

感谢您的任何指点!

0 投票
1 回答
681 浏览

angular - 如何使用 Observables 进行组件间通信

我正在使用来自 Rxjs 的 Observables 和 Subjects 在两个组件之间进行通信,这是服务部分:

我正在从另一个组件的构造函数中调用订阅者,其片段是:

但是当我从后端接收数据时,我会调用主题的下一个方法,并在另一个组件的构造函数中再次调用它。它不起作用,而我已经看到它起作用的例子。该服务已在全球范围内注入。

0 投票
2 回答
10656 浏览

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

0 投票
1 回答
1899 浏览

angular - 如何将同一个 observable 与多个映射一起使用?

我的代码有一个Subjectwhich,当添加新值时会触发一个 HTTP 请求,该请求返回一个Observable.

我想以两种不同的方式处理这些数据(使用相同的数据),并将结果Observables存储在group和作为使用管道times放入的值。ngForasync

虽然这确实有效,但 HTTP 请求会发送多次 - 我只希望每个订阅发送一次。

下面是一个最小的例子。

实现这一目标的最佳方法是什么?

0 投票
1 回答
2438 浏览

angular - 如何在运行初始化代码之前等待订阅模板中的可观察对象(使用异步管道)?

我有一个 HTTP 服务,它在将给定的项目 ID 传递给它时返回一些信息。这是通过 a 完成的Subject,它在 thenngOnInit方法中接收第一条数据。

然后我使用async管道以 HTML 格式显示服务返回的数据。

我的问题是async管道在我使用第一个项目 ID 调用时尚未订阅可观察selections.next对象 - 因此在初始化时不会显示这个。

在我将第一条数据发送给主题以开始第一个 HTTP 请求之前,我如何才能等到async管道订阅?Observable

我尝试了不同的生命周期挂钩,但似乎都没有奏效。

0 投票
2 回答
100 浏览

angular - 当 localStorage 中的特定键发生更改时通知其他组件 - Angular

我的问题很笼统。我想观察 localStorage 的角度变化,但 localStorage 中的每个键都需要单独观察。

例如,我在 localStorage 中有一些产品列表,_products_比如说,它存储了一系列产品。现在,每当我添加新产品并将其附加到_products_localStorage 中的键时,我希望其他组件知道_products_已修改。

这里有一个解决方案,但它会监视 localStorage 中的所有键。

感谢你的帮助。谢谢。

0 投票
1 回答
7488 浏览

javascript - Angular 4 RxJs Observable Subjects 数组未使用新对象更新

所以最近我了解了主题,我正在尝试在个人项目中使用它们。我有一个从 json 文件中获取数据并将其转换为“文章”类型的服务。Article 是一个自定义类,用于保存有关博客文章的信息。

我的最终目标是获取这个文章数组,然后当我按下 + 按钮时,它会在当前列表中添加一个新的空白文章,并且视图应该通过显示具有一些默认值的空白文章来表示它。这不会保留(保存到 json)新的空白文章,而只是将其添加到当前列表中,以便视图更新并显示它。储蓄将在稍后到来。

我一辈子都无法让它发挥作用。所有文章都正确显示在我的“文章列表”页面上,但手动将一个空白推到它似乎根本没有做任何事情。

这是我的服务文件

我有一个列表组件更新列表,如下所示:

以及创建新空白文章的另一个组件:

我可以调试,并且服务上的 this.articles 属性似乎已更新为新的空白文章,但视图没有改变,我无法确定,但似乎该文章很快就丢失了无论如何,只要它添加。observable 是否重复了 http get 并再次清理了文章列表?

0 投票
1 回答
239 浏览

angular - 如何在主题中只保留一个参数?

从控制器我向主题输入参数

从我的组件importacion.component.ts中我订阅了这个主题

现在一切都很好,但是当我关闭 importacion.component.ts 的对话框并再次执行此操作时,主题会创建第二个 suscbripcion 并因此创建 2 个观察者,然后当我使用 .next() 输入新数据时,订阅者会运行两次。

我该如何控制这种行为,我的预期行为是只存在于我的主题中并提供参数,并且仅在其值更改时运行