问题标签 [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 投票
0 回答
122 浏览

javascript - Race observable 下的 distinctUntilChanged 未按预期工作

我们希望缓冲数据,直到达到以下两个事件,例如去抖时间达到 5 或值更改。但是根据下面的测试,我们发现它不能正常工作。

我想要实现的行为是。

a)当值发生变化时,我想发出这些缓冲值。

b)当达到去抖时间时,我想发出缓冲值。

0 投票
1 回答
657 浏览

angular - 在 Angular 单元测试中监视 Observable subscribe() 和 add() 方法

我的 testComponent 中有一个方法,它返回一个已订阅并在取消订阅后的 observable,然后它运行 .add() 中的代码(即取消订阅时)

我如何监视此方法并观察调用 subscribe 方法以及取消订阅时 add() 方法时发生的操作。谢谢

这是代码示例

我需要一种方法来观察 subscribe() 和 add() 块中发生的事情。

0 投票
2 回答
14558 浏览

typescript - 在 Jest 中,我如何对订阅 observable 的方法进行单元测试

我的组件中有各种方法订阅注入依赖项中的方法,这些方法返回可观察对象。

我想编写 Jest 单元测试以确保当这些可观察对象返回/错误时,我的方法会做正确的事情。

在下面的示例中,我正在尝试编写一个检查是否doAThing已触发的测试。以下测试均无效。他们都因错误而失败,例如

'returnMyObservable.subscribe 不是函数'。

0 投票
1 回答
599 浏览

javascript - ApplicationRef.isStable 未执行

我正在尝试编写一个服务来衡量应用程序变得稳定的完成时间。这是服务:

测量服务.ts

app.module.ts(缩写):

根组件.ts

第一个console.log正确MeasureService记录时间。但是,似乎applicationRef.isStable永远不会触发,因此第二个console.log永远不会写入控制台。

我这样做对吗,还是我错过了什么?

0 投票
1 回答
639 浏览

angular - Angular8 RXJS CanDeactivate 在停用前等待可观察的结果

我正在尝试使用 CanDeactivate 防护来检测用户何时离开组件。目的是 #1 检查当前用户是否拥有记录上的“正在编辑”锁,如果是 #2,则调用 observable 来更新数据库。

我拥有的代码部分工作,但有一个竞争条件,锁并不总是被释放,可能是因为在this.updateIsBeingEdited$(false)调用下一个 return 语句时订阅并不总是完成。所以我知道这没有正确实施。

如何使this.updateIsBeingEdited$可观察对象在 canDeactivate 返回值之前完成?

返回值应始终为 true,因为组件应始终停用,它只需要确保this.updateIsBeingEdited$.subscribe()在停用完成之前完成。

零件

警卫

0 投票
0 回答
249 浏览

angular - 返回前的Angular 8 RXJS6 Observable预处理响应

我有一个进行 API 调用的 observable。API 调用在响应中返回一个对象数组。

我在多个地方使用这个 observable。在大多数情况下,我想要响应中的对象。

但是,在 CanDeactivate 的情况下,我需要“预处理”响应以返回 true 或 false,因为 CanDeactivate 预计会返回 Observable。

有没有办法利用响应来提前处理它(也许使用“点击”操作?)

0 投票
2 回答
413 浏览

angular - 将 Observable 作为 Subject 传递和展开

我需要将数据从一个组件传递到另一个组件,但我很难做到这一点。

我有一个Observable我需要传递的作为Subject另一个 Observable。我怎么做?我目前的方式在目标组件 undefined中无法正常工作。

这就是我所拥有的:

card.component.ts (一切从这里开始)

如果我console.log()得到airportPickup对象。没有问题。问题是当我在另一个组件中获取它时,我将它作为undefined.

flight-info.component.ts (目标)

我有这个服务

airportPickupDropoff = new Subject<any>();

0 投票
2 回答
363 浏览

angular - 执行多个请求角度 8

我是 rxjs 运算符的新手

执行两个请求并检查其中一个请求是否返回有效并检查两者是否都失败的最有效方法是什么。

我尝试了 forkJoin 但无法确定两个请求都失败时如何处理。

0 投票
2 回答
4205 浏览

rxjs - 如何有条件地从ngrx中的效果调度多个动作

我是一名后端开发人员,从我正在从事的项目的前端开发开始。前端使用 Angular7 和 NgRx。在过去的 4 天里,我学习了很多东西,但这是我一直坚持的事情,希望能得到您的帮助。

我了解到,我们可以通过返回一个具有多个操作的 Observable 数组来从 NgRx 中的一个效果中分派多个操作。我想根据条件调度数组中的一个动作。

我的代码看起来像这样

我想实现这样的目标

我认为这是我对 RxJs 的了解不足,这使我无法实施该条件。

0 投票
3 回答
1191 浏览

angular - rxjs:结合可观察的结果,同时已经用异步管道显示第一个

使用 rxjs 的 Angular 已经显示第一个可观察对象的结果并在其他可观察对象完成时组合数据的最佳方法是什么?

例子:

我知道可以通过订阅两者来完成,然后合并结果。但是是否可以为此使用管道运算符并使用async管道?