问题标签 [behaviorsubject]

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 回答
366 浏览

c# - 如何处理行为主题的异常

我有一个行为主题

然后我用类似的东西处理那个源

我想以可以跳过错误的方式订阅 withErrors。像这样的 catch 尝试。

然后这样称呼它

Skip 是为了避免在行为主题上重复最后一个错误,但可惜它不是那样工作的。Skip 不会跳过错误,而只会跳过有效数据,因此行为主题中当前状态的错误会不断通过。

是否有一种聪明的方法来编写 Skip 也会跳过错误。有些东西告诉我这是不可能的,但希望我错了

0 投票
1 回答
2616 浏览

rspec - rspec 是否会记住“主题”块?

我正在使用的编码标准规定,一组测试函数的规范应该有一个主题,即被调用的函数。它看起来像这样:

subject块的典型用途是实例化您正在测试的类:

我们的风格指南的预期效果是,我们对每个正在测试的方法都有不同的主题块。这会减慢我们的测试速度吗?如果我们subject以典型的方式使用,我们是否会从内置的记忆或其他加速中受益,因为每个班级只有一个主题块?

旁白:

我遇到过一种情况,我们的风格不起作用。使用时,any_instance.should_receive您不能遵循我们的样式指南,否则规范将始终失败。相反,您需要使用更传统的方法subject,您正在测试的对象在哪里,并在规范中调用该方法。

这种风格还有其他我应该注意的问题吗?

0 投票
1 回答
173 浏览

android - 在使用 RxAndroid 时替代 observables 并且只需要一次值

我正在开发一个使用响应式框架的 android 项目。我有一个带有数据成员的对象,可以根据使用输入更改其值,比如“名称”。我需要监听这个变量的变化,所以我要为它创建一个行为主题。但是,有些代码我只需要说一次值,比如说在按钮单击时弹出一个警报,我需要显示一次并且不关心它是否改变。我不知道将这个值作为行为主题并在我需要访问它一次时使用它是否是一件好事,我宁愿有一个或另一个,我需要倾听变化所以我必须有行为主题。同时,必须注册它,获取最后一个值并在获得值后立即取消注册似乎有点过头了。

0 投票
1 回答
2856 浏览

typescript - 调用 BehaviorSubject.next 时 Observable.subscribe 方法未触发

我试图在我的导航栏组件中获取用户是否已登录,以便我无法/禁用导航栏项目。我正在使用 BehaviorSubject 来多播数据。我的 AuthenticationService 包含 BehaviorSubject 对象,您可以在以下代码中看到:

触发代码的我的 AuthenticationComponent 代码如下所示:

最后,My NavbarComponent 如下:

以此为例来编写代码。请让我知道我哪里出错了。

0 投票
1 回答
726 浏览

swift - RxSwift:嵌套查询和 ReplaySubject

我必须使用三个单独的 API 请求来获取三种类型的数据( AType, BType, )。CTypeAPI 返回的对象是一对多的:

  • 1 个AType对象是 N 个对象的父BType对象
  • 1 个BType对象是 P 个对象的父CType对象)

我正在使用以下三个函数来获取每种类型:

并且为了避免嵌套订阅,这三个函数使用链接flatMap

上面的代码工作正常,当有 M 个对象时AType,我可以看到"One more item fetched"打印 MxNxP 次的文本。

我想设置该功能getAll()以使用. 我最初的想法是写如下内容:ReplaySubject<String>

但此尝试失败,即以下内容print()不打印任何内容。

我应该如何重写我的逻辑?

0 投票
1 回答
3855 浏览

angular - Angular2:订阅 BehaviorSubject 不起作用

我有一个Alert.Service.ts将从另一个服务获取的警报保存在一个数组中。在另一个header.component.ts中,我想获得该数组的实时大小。

所以,在Alert.Service.ts我有

而且,在 中header.component.ts,我有

我希望alertListSize只要alerts数组Alert.Service.ts更改就会更新。但是,它始终是创建0时的初始值。BehaviorSubject订阅部分似乎不起作用。

0 投票
1 回答
3210 浏览

ionic-framework - BehaviorSubject 和本地存储

我仍在尝试围绕 rxjs 和 observables 和 BehaviorSubject 进行思考。我想做的是,将 BehaviorSubject 和 LocalStorage 结合起来,以便在特定 LocalStorage 变量发生变化时通知所有组件。

例如,考虑以下场景。

  • 有两个组件 Component1 和 Component2。

  • 这两个组件都在 LocalStorage 中查找名为 Component1 和 Component2 的变量,它们包含一种颜色,并且它们显示该颜色的正方形。

Component1 需要订阅LocalStorage 中的“Component1Color”键,Component2 需要订阅LocalStorage 中的“Component2Color”。

一种方法是使用 BehaviorSubject 来维护 LocalStorage 的状态,并且在任何时候对任何变量进行更改时,都会将此消息广播到已订阅 BehaviorSubject 的所有组件。

这种方法的问题在于,当 Component2Color 更新时,component1 也会收到通知,并且不会对此采取任何措施。

更好的是,Component1 仅在 Component1Color 更新时收到通知,而 Component2 仅在 Component2Color 更新时收到通知。有没有一种方法可以使用单个 BehaviorSubject 来完成?

0 投票
1 回答
10137 浏览

angular - 如何在 Angular 2 中将多个 Observable 组合在一起

所以我刚刚开始使用 Angular 2 进行编程,并且刚刚开始学习订阅、Subject 和 BehaviorSubject。目前我有多个订阅来获取存储在我的服务中并发送到组件的值。我的应用程序有效,但我知道它的效率很低。它在我的组件中已经失控:

(和其他 5 个获得单个值并每次调用函数 getSession() 一样)

在我的威胁服务中:

所以我试过:

我的目标只是测试 res 是什么,因为我不确定如何访问这两个值......但我在控制台中得到了这个。;/

最终,我想从我的服务中获取 getSession() 需要的所有值并运行该函数一次。我非常感谢任何有关如何使用 concat、merge 或 forkJoin 来合并我的订阅的帮助或解释。谢谢!

0 投票
1 回答
219 浏览

javascript - RxJS 5:我可以创建一个 `BehaviorObservable` 吗?

我正在为我的应用创建一个类,该类保留一个内部BehaviorSubject. 有没有办法可以公开相应的“ BehaviorObservable”,它通过主题的值进行管道传输,但只有接口的“只读”内容Observable?,.next()和方法应该.error().complete()在内部可用。

这不仅仅是(我相信)使用Observable.create()管道传递主题值的问题。我的 API 的用户应该.subscribe()对暴露的 observable,然后立即获取存储的当前值的回调。

我也许可以一起破解一些东西,但我确信我只是错过了 RxJS 已经可以做的一些事情。

0 投票
2 回答
1540 浏览

java - FlatMap 和主题 - 如何避免重复订阅者?

假设我有以下代码:

它产生的输出是:

不断地。

我理解它为什么会发生 - 这是因为每次flatMap调用时,都会将新订阅者添加到subject2.

问题是 - 如何避免这种情况?