问题标签 [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.
rx-java - 释放最后一个值的 BehaviorSubject
任何人都知道 BehaviorSubject 的自定义实现,一旦订阅者使用它就会丢弃最后一个值?
为什么这样的实现会是一个坏主意?
angular - Angular2 Observable不会触发重新渲染
TLDR:可观察对象在用户做出操作之前不会触发组件重新渲染(例如单击按钮)。
我正在更新一个由 BehaviorSubject 支持的 observable,该 BehaviorSubject 包含在注入到我的组件中的服务中。
在我的组件中,我使用一个简单*ngIf="myObservable$ | async"
的来显示一个 div。
我设法复制了两种情况,一种有效,另一种无效,但我不明白有什么区别:
angular - Observable BehaviorSubject 服务 - 单例和提供者
我有一个简单的组件progressBar
来显示(或不显示)进度条。和一个简单的可观察服务。
这是服务:
false
这里没有什么花哨的,只是一个默认设置为 的 BehaviorSubjecthide/show
用于更改值.next()
。
该组件如下所示:
在初始化期间,组件订阅主题以获得默认值并将其设置为isDisplay
.
showProgress
仅用于在我的模板中尝试。
当服务在组件内部使用时,它工作得很好。
但是,当我尝试在另一个组件中调用此服务时,它不起作用。
示例:我的另一个组件称为profilesComponent
我认为这是因为这两个组件不共享相同的服务实例,但我找不到这样做的方法。(也许提供者在@NgModule
?)
angular - BehaviorSubject 不断重置为原始值
我有一个 angular 2 项目,其中有几个组件。其中一个组件使用订阅跟踪成员(即前面提到的 BehaviorSubject)。
当用户单击按钮时,BehaviorSubject 的值会更新并推送。
但是,在订阅时,唯一推送的值是原始值(即 0)。
Navbar 组件是订阅者,其中在 CountService 中声明了 BehaviorSubject。
我的计数服务:
我的导航栏组件:
javascript - 具有布尔值的 BehaviorSubject 未按预期工作
我已经实现了一个简单的BehaviorSubject
,
现在运行时stStatus()
会在控制台上显示以下输出。
虽然我期望值
我的实施有什么问题?
angular - 多个元素上的事件触发,而不是 *ngFor 中的一个
在我的 Angular2 应用程序中,我有以下“视图”代码:
在component.ts中:
问题是我的函数同时适用于由*ngFor创建的视图中的所有元素,当然,我需要增加/减少单击按钮的一个元素的数量。
我试图将“item”作为参数传递给触发函数,但后来我的属性“item”在 AppComponent 类型上不存在
在视图中尝试将 {{qnt}} 更改为 {{item.qnt}} 并得到Can't read property qnt of undefined
我猜是因为使用了 BehaviorSubject,因为其他属性如 item.description 和 item.title 是通过 json 传递的,而 qnt 是在运行时初始化的。
但是现在该怎么处理呢?
angular - BehaviorSubject 上没有视图更改,但仅在第一页访问时
我编写了一个表格模块,其中包括一个过滤器模块、一个标签导航模块和一个分页模块。该表格模块由不同的父组件实现,例如用户列表或消息列表。父级将对象列表发送到表格模块,然后将其发送到不同的子组件(过滤器、选项卡导航、分页)。这是仅将分页作为一个子组件的基本设置。
为了将消息列表作为对话列表,我构建了一个对话服务,其中所有消息都从服务器接收并转换为对话列表。当服务中的对话列表发生变化时,会触发一个事件。因为消息列表组件订阅了这个事件,所以消息列表中的列表也会改变。
问题是当我第一次访问页面时,在分页中转换列表后显示的表格不会改变。当我再次访问该页面时,单击选项卡导航的选项卡或分页的站点按钮即可。这只发生在消息列表组件而不是用户列表组件上。奇怪的是,只有表格本身不会正确显示,表格模块中接收到的对象列表通过分页正确转换。
如您所见,BehaviorSubject 包含 3 个对象,但该表有 6 个条目。如上所述单击任何按钮后,视图会正确更改。
当我不在 ConversationService 中进行 API 调用时,它可以工作。
那么什么可能导致这个问题呢?
更新 1
这是构建对话列表的代码。
更新 2
在发现里面的错误时,this.buildConversations()
我认识到错误不能在这个函数中。当我执行以下操作时,我会遇到与以前相同的错误。
因此,在 API 调用期间肯定会出现错误,但我找不到任何错误。这是 API 调用的代码。
android - 调用 PublishSubject.onNext() 和接收它之间的 Rx 间隔很长
在后台线程中我调用PublishSubject.onNext();
并在主线程中通过subscribe(PublishSubject.filter(message -> message.getId() == id), this::onMessageInserted);
我收到它。平均持续时间约为 20 毫秒。有没有办法减少这个时间?
我们用
'io.reactivex:rxjava:1.2.5'
'io.reactivex:rxandroid:1.2.1'
android - Concat Observables 到 BehaviourSubject
我的 ViewModel 中有一个 BehaviourSubject,我想将其连接到执行操作的可观察对象。所以,我想从数据库中获取用户列表。我有一个具有此操作的可观察对象。我在我的视图中订阅了 BehaviourSubject,然后调用 getUsers,但没有结果。提前致谢。
代码:视图模型
看法: