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

0 投票
12 回答
533241 浏览

javascript - BehaviorSubject vs Observable?

我正在研究 Angular RxJs 模式,但我不明白 aBehaviorSubject和 an之间的区别Observable

据我了解,aBehaviorSubject是一个可以随时间变化的值(可以订阅并且订阅者可以接收更新的结果)。这似乎与Observable.

你什么时候使用 an Observablevs a BehaviorSubjectBehaviorSubject使用 a over an是否有好处,Observable反之亦然?

0 投票
4 回答
7015 浏览

angular - Angular 清除订阅的更好方法

有很多方法可以在一个组件中有效地处理多个订阅,我这里有两种方法,想知道哪种方法更有效,为什么?

方法一:使用数组

第 1 步:创建数组

第 2 步:向数组添加订阅

步骤 3:迭代每个订阅和取消订阅

方法二

第 1 步:创建新订阅

第 2 步:添加订阅

Step3:清除订阅

0 投票
2 回答
1352 浏览

angular - RxJs 操作符避免多次订阅,有循环

我正在为 Angular 应用程序编写导航组件。我有以下代码。我想避免多重订阅反模式。我正在为 RxJs 语法和走哪条路(forkJoin、mergeMap 等)而苦苦挣扎。

我如何重构这些,以删除订阅中的订阅。

这是我所拥有的,目前有效,但在订阅中有订阅:

0 投票
1 回答
40 浏览

reactjs - 可能是比赛条件

大家好,我尝试解决一个错误。单击按钮后,时间输入有时为空。当我使用 delay() 时一切正常。但是,当我创建新访问者时,我没有空输入。

不延误()

有延迟

0 投票
2 回答
901 浏览

rxjs - 检索 Observable 订阅者并让他们订阅另一个 Observable

简单的说

给定一个现有的 Observable(尚未完成),有没有办法检索关联的订阅者(传递给 subscribe 的函数)以使他们订阅另一个 Observable?

语境

我的应用程序中的一项服务有助于创建SeverEvent连接,将ConnectableObservable返回到代理连接并允许使用发布运算符进行多播。该服务通过内部存储跟踪现有连接:

在创建连接时,如果关联的跟踪器已经存在(使用连接的端点生成身份),服务应该:

  • ok关闭现有跟踪器的ServerEvent连接
  • ok打开一个新的SerevrEvent连接(因此是一个新的 ConnectableObservable)
  • 用新的 observable 替换现有跟踪器的 Observable,但现在让现有订阅者订阅新的 Observable

这是创建ConnectionTracker的代码部分

谢谢你。

0 投票
1 回答
76 浏览

angular - 等待两种以角度返回可观察对象的方法

我有两种方法可以进行 api 调用并返回 observables。

然后我有以下两种方法:

最后一个

我希望method4等待method3完成所有请求才能继续,但我不知道如何在角度 8 中实现它。有什么提示吗?

0 投票
1 回答
217 浏览

javascript - 如何在Angular httpClient errorCatch中消除没有“lodash”的普通函数调用

我有一个在 Angular HttpClient catchError 中调用的函数。我想在不使用 Lodash的情况下消除对函数的调用。此处不能使用debounceTime,因为该函数不是主题。是否有 ES5/ES6 等价物?

0 投票
1 回答
126 浏览

angular - 如何将顺序发出的数据转换为单个数组

所以,我使用ngrx store 来获取数据。一旦我从商店中选择了我想要的属性,然后我订阅了它以获得可观察的流。我的数据包含对象数组。所以在这个对象数组中,我必须对每个对象的一些属性做一些修改。

因此,为此我使用 rxjs 库的“from()”运算符将我的对象数组转换为顺序可观察对象,然后将其分配给新的可观察对象。使用这个新的 Observable 对象,我应用 map 函数进行修改,最后再次返回一个新的 Observable 对象。直到这一步一切正常。问题出现了,当我订阅这个新的修改后的可观察对象时,它按顺序发出值,而不是整个对象数组。但我想要修改后的对象数组。

0 投票
4 回答
4566 浏览

angular - 如何取消订阅由 Angular 服务创建的 observable

我对 Angular 还很陌生,我的问题可能看起来很基础,但我们将不胜感激。我目前正在编写一个应用程序来教自己一些真正的开发技能。在我的应用程序中,我有一个 Angular 组件,它导入了我编写的提供数据的服务。

这是我的组件

这很简单,但如果我尝试添加this.apiService.getInstruments.unsubscribe()ngOnDestroy块中,则会收到错误 P roperty 'unsubscribe' does not exist on type => Observable'。我什至考虑在类似链接.unsubscribe()之后添加,.subscribe()但这只会让我的页面挂起。我也没有错误。有人可以告诉我如何最好地退订吗?ngOnDestroy我是否需要将 api 调用分配给变量,然后在块中的变量名称上使用 .unsubscribe()

0 投票
1 回答
35 浏览

angular - http调用之上的包装器可观察事件

我有一个返回对象的函数。不是同步返回对象,而是可以将它返回到一个可观察对象中,该对象可以稍后使用回调解决(类似于 http 调用)。

调用函数:

称为 Fn

你能告诉我这是否可能以及如何创建和返回一个 observable 就像 http 调用如何返回一个?