rxjs 相关问题

JavaScript的Reactive Extensions(RxJS)是一组库,用于使用可观察集合和Array Extras样式组合来编写异步和基于事件的程序。

基于信号的实用程序跟踪使用可观察对象执行的多个异步操作

我需要一个基于信号的实用程序来跟踪使用可观察对象执行的多个异步操作的状态(例如 HTTP 调用)。所以我也可以使用 OnPush c 在组件中使用这些信号...

回答 1 投票 0

Angular 上的批量订阅 |同时管理多个订阅

想象一下这种情况...... 我有一个大约+1k 的列表要在网格中显示。 用户可以单独更改网格值,或者他可以选择一些选项来更改所有项目中的相同属性。

回答 1 投票 0

强制一个可观察对象基于另一个可观察对象抛出

我有一个名为“poll”的函数,它使我能够轮询 API 端点。 在某些时候,我希望通过手动操作停止轮询,这里名为“manualForceStop”,我...

回答 1 投票 0

combineLatest 的 RXJS 运算符,不带空值

在我的 Angular 项目中,我试图获取一些 ngrx 选择器的值,并使用它们全部创建一个用于 API 调用的查询字符串。 我想等到它们都发出非空值...

回答 1 投票 0

在路线之间导航时的角度多重订阅

我注意到,当我在角度应用程序中的路线之间导航时,我收到了多个订阅。 在我的父组件中,我有一些这样的路线: 我注意到,当我在 Angular 应用程序中的路线之间导航时,我收到了多个订阅。 在我的父组件中,我有一些像这样的路线: <li routerLink="route1" [routerLinkActive]="['active']">Route 1</li> <li routerLink="route2" [routerLinkActive]="['active']">Route 2</li> 这两条路由都加载相同的子组件,然后从我的服务获取一些数据: 组件.ts this._entityService.getEntities(this.jobId, this.selectedStage) 然后在我的服务中我正在这样做: 服务.ts // get entities this.http.get(`/api/entities/${jobId}/${stage}`).pipe(take(1)).subscribe((entities:IEntity[]) => { this.entities$.next(entities) }) // get tasks this.http.get(`/api/tasks/${jobId}/${stage}`).pipe(take(1)).subscribe((tasks:ITask[]) => { this.tasks$.next(tasks) }) combineLatest( this.entities$, this.tasks$, ).pipe( map(([entities, tasks]) => { // doing some stuff here }) ).subscribe(entities => { this.entities = entities }) 然后在我的组件中,我直接从服务加载数据: html _entityService.entities 但是,当我在两条路线之间导航时,订阅并没有被销毁,因此我最终得到了多个订阅。当我离开组件时,如何正确销毁订阅? 我们需要在组件上添加订阅,这样我们就可以取消订阅了!当组件被破坏时! 组件.ts ... export class compoenent { private sub: Subscription = new Subscription(); ngOnInit() { this.sub.add( this._entityService.getEntities(this.jobId, this.selectedStage).subscribe() ); } ngOnDestroy() { this.sub.unsubscribe(); } ... 服务.ts getEntities(jobId: any, stage: any) { // get entities const entities$ = this.http.get(`/api/entities/${jobId}/${stage}`).pipe(take(1)) // get tasks const tasks$ = this.http.get(`/api/tasks/${jobId}/${stage}`).pipe(take(1)) return combineLatest( this.entities$, this.tasks$, ).pipe( map(([entities, tasks]) => { // doing some stuff here }), tap((res: any) => { this.entities = entities; }); ) 这是因为您的服务是单例(在整个应用程序中共享),但您每次都像使用新实例一样使用它。如果不同的组件可能有不同的参数(并且可能需要不同的实体和任务组合),那么该服务不应该是单例。 您可以在我的免费文章中阅读更多相关信息:Angular 中的全局共享实例 — 谨慎使用。 在任何情况下,服务不应该返回订阅或订阅本身,它应该返回一个 Observable。消费者将决定何时订阅以及何时取消订阅。 要在组件被销毁时销毁订阅,可以使用运算符 takeUntilDestroyed()。

回答 2 投票 0

可观察数据更新时角度组件闪烁

我正在开发一个 Angular 组件(GestionAchatTpvGenerationProgressBarComponent),旨在根据来自 Observable 的数据显示进度条。该组件是独立的并使用 O...

回答 1 投票 0

更新共享资源时避免并发 POST API 调用中出现重复条目

我正在开发一个 Web 应用程序,遇到并发 POST API 调用导致重复条目的问题。应用程序处理共享公共标识符的实体,并更新...

回答 1 投票 0

如何根据值以角度过滤 Observable 数组

我请求一个 Web 服务并接收一个可观察对象,然后循环它们以构建另一个对象数组,如下所示。 导出接口卖家{ 电子邮件?:字符串; 是否在线?:布尔值; 名称?:字符串; }

回答 3 投票 0

如何使用 RxJS 从 Angular 中的多个 FormControl 实例检索值?

我订阅了filter1、filter2和filter3,它们都是FormControl实例。每当其中至少一个发生变化时,我想检索所有三个的值。最初,我尝试使用

回答 1 投票 0

为什么我的 RxJS Observable 链在后续发射时不重新执行?

我正在 Angular 服务中使用 RxJS,并且我的一个可观察链遇到了一个特殊问题。具体来说,我有两个可观察的链,旨在丰富流......

回答 1 投票 0

缓冲 rx.js observable 的多个订阅者

我有 var subject = new rx.Subject(); var Stream = rx.Observable.fromEvent(blah, '事件') .过滤器(废话) .map(废话) .订阅(主题)...

回答 1 投票 0

根据可观察到的变化动态更新 Angular 路线

我正在开发一个 Angular 应用程序,其中使用 Angular 路由。以下是我的 app-routing.module.ts 文件的片段: // 应用程序路由.module.ts: 进口 { Ng模块 来自“@Angular/Core”; ...

回答 1 投票 0

多个连续的 Observable 依赖于单个 Observable

我很好奇编写以下场景的更好方法。 假设我有一个 userObservable 从数据库获取用户数据(用户)然后我想 验证用户的一些输入,validateObservable ...

回答 1 投票 0

如何在 Angular/RxJS 中不使用 toArray() 的情况下检索 Observable 末尾的数组?

我有一个可观察的enriched_sns$,我通过使用concatMap对每个发出的项目执行操作来丰富它,然后使用toArray()将结果组合到一个数组中。不过,我很好奇...

回答 1 投票 0

表单组内的行为主体(作为对照)

我有一个名为 currentForm 的表单组,其中包含一个名为 items 的表单数组。 由于应用程序组件的问题,我需要在项目表单组内有一个主题,我不确定这是否是一个好的做法......

回答 1 投票 0

角度信号:如何处理 API 请求

所以我对信号很陌生,我正在尝试在我们的应用程序中越来越多地使用它们。我仍然无法理解的部分是 rxJS 和 Signals 之间的连接。因为我们正在使用

回答 1 投票 0

一个 Observable 可以有多个订阅者吗?

我有一个 Observable,我认为一个 Observable 只能有一个订阅者。但是下面的代码订阅了两次并且对于两个订阅者来说工作正常 - 为什么呢? (我的意思是双方都收到...

回答 1 投票 0

管道/过滤某些事件序列的奇特方式

假设我有一个返回随机数的可观察值,我只想了解它的每第二次(或第n次)出现,我现在会编写以下过滤器: 导入{间隔...

回答 1 投票 0

TypeScript、Rxjs、SwitchMap、tap 不会执行

setUsersData() 和 addNewUser() 完成其工作后返回 Observable。 即使这部分代码工作正常,来自 tap 运算符的函数也不会执行,如果我将逻辑移动到订阅,情况也是如此。任意

回答 1 投票 0

状态更新后ngrx效果是否再次触发?

在我的 Angular 项目中,我有这个 ngrx 效果,它会触发一个新的 SearchAction: createSearchWithNewLimit$ = createEffect(() => { 返回 this.actions$.pipe( ofType(pageLimitChangedAct...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.