问题标签 [rxjs-observables]
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.
angular - Angular 订阅在局部变量中未定义
我有一个局部变量,想在我们的 Angular 组件中使用 Observable 只是为了订阅它并在本地存储响应,但是它总是如何变得未定义。任何线索为什么它不分配?
angular - rxjs - 在两个不同的订阅中更改单个数据 - 使反应更灵敏
我是 Angular2+ 和 RxJs 的新手,所以如果我问一些明显的问题,我很抱歉。
功能性
当数据刚刚开始加载、startAction
发出、isLoaded
转动false
并显示微调器时。
一旦数据被加载,endAction
被发射, isLoaded 被设置为true
。微调器被隐藏起来,并描绘了主要数据。
一旦用户单击另一个按钮,就会加载另一数量的数据。startAction
再次发出,微调器将再次显示,直到数据加载。
我有的
在组件中:
在模板中:
我需要的
一切都很好,但我需要重新设计这种方法,使其更具反应性。我必须摆脱订阅并isLoaded
变成可观察的才能通过async
模板中的管道使用它。
我试过的
在组件中:
在模板中:
我的解释
根据我的理解,必须在andtakeLast(1)
之间发出最后一个动作。所以当发生时,应该发出一个 observable over ,when -一个 observable over 。isStartLoading
isEndLoading
startAction
takeLast(1)
false
endAction
true
出于某种原因,我只看到了初始微调器,并且没有描述结果数据。看起来我对combineLatest
+takeLast
应该如何协同工作有错误的理解。
当我tap(console.log)
在takeLast(1)
/之后添加时last()
,我看到它永远不会发出。但是当用 替换它时take(1)
,它预计只会发出一次。所以我看到了微调器,然后是数据,然后在单击另一个按钮后 - 新加载的数据有延迟且没有微调器,因为我们只采用第一个。
任何帮助表示赞赏!
node.js - 取消订阅仅在必要时发出一次的可观察计时器?
在我的程序中,我有一些timer(1000).subscribe()
实例以及一些timer(1000, 1000).subscribe()
部分。
我遇到了一些内存泄漏问题,想知道是否可以通过取消订阅计时器来缓解这些问题。取消订阅循环计时器似乎很简单且必要,但我是否还必须取消订阅只发出一次的计时器?
我的问题的第二部分是,是否有更好的方法来取消订阅发射计时器,而不是将其放入如下变量中:
谢谢!
angular - 在渲染下一个组件之前等待组件的数据加载 - Angular
我必须渲染一个组件链(比如刀片中的网格),其中在加载第一个组件的数据后,我将单击该组件的数据行,它将打开下一个组件。单击下一个组件的数据行时,它将打开另一个组件,依此类推。
我正在遵循的方法 - 我在所有这些组件之间有一个共享服务,并且每当为任何组件加载数据时,该组件都会在我的服务的 BehaviourSubject 上调用 next 方法 -this.service.dataLoadedEvent$.next(componentName)
我的服务方法看起来像 -
组件看起来像 -
但这里的问题是,在通知服务有关数据加载完成之前,for 循环会前进。因此它将循环变量设置为最后一个值,并在最后一个 componentInstance 上调用该方法,这不是预期的行为。任何帮助将不胜感激。提前致谢 !
rxjs - RxJs:您可以将运算符作为参数传播到管道运算符中吗
我有两个可观察的流,它们执行非常独立的映射逻辑,但最终以以下 3 个运算符结束:
我想将最后一个tap, switchMap, map
运算符移动到一个通用函数中,这样我就可以在我的两个可观察流中应用它们。
我想过这样做:
但我不确定如何将这些运算符传播到管道参数中,例如:#
这个错误there are no overloads that expect 3 or 5 arguments
..
rxjs - 同步 RxJs 取消订阅不起作用
演示:https ://stackblitz.com/edit/rxjs-unsubscribe-issue?file=index.ts
下面的代码不起作用
错误:无法读取未定义的属性“取消订阅”
但是下面的代码正在工作
帮我理解背后的原因
angular - 使用 Angular Observable 订阅 Session Storage 密钥
我正在尝试完成我希望的简单的“查看会话存储中的密钥并在它发生变化时更新它”的场景,但是 Observables 真的让我很受挫。
message$ 绑定到 HTML,非常简单:
如果“Observable
消息HTML
”中已经存储了值,但如果 init 上没有消息然后它被添加,或者消息值确实存在并被更新,则不会发生任何事情。我显然做错了什么,我会很感激有知识的人的洞察力Observables
。
angular - 这个可观察到的泄漏内存吗?
根据这篇文章,我对 observables 还很陌生。下面的示例会泄漏内存。然而,我在网上看到了大量的教程展示了这样的例子。
上面的代码是否泄漏内存?我们总是必须退订吗?http 调用呢?
observables 的一般最佳实践是什么?
angular - Mat Select 使用 Observable 显示空选项
我正在使用 Observable 的结果创建 mat-select 选项,但选项未呈现。当它是简单的数组时,它正在渲染。
以下是我构建的示例 -请参见此处
angular - 使用 RxJs ConcatMap 不要发送 null 值或空字符串
我正在使用 RxJs concatMap 来控制我的应用程序中某些数据的保存。
目前这有效,但是即使说“this.OneData”为空或为空,它也会执行......我怎样才能让它基本上不发送 NoOpp 请求?