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

rxjs - merge 和 mergeAll 有什么区别?

merge 和 mergeAll 有什么区别?他们看起来和我一样: http ://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-mergeAll http://reactivex.io/rxjs/class/es6/Observable。 js~Observable.html#static-method-merge

0 投票
1 回答
94 浏览

rxjs - 如果没有错误,如何在 RxJS 链中运行一些代码

我试图找到一种仅在给定的 rxjs 链中没有错误的情况下运行某些代码的方法。考虑以下问题,NO_ERROR_OCCURED_RUN_HAPPY_PATH_CODErxjs 中是否有类似人工运算符的东西?

0 投票
1 回答
353 浏览

angular - RXJS/Angular 替换 Observable

在角度拦截器中,我想检查是否存在身份验证令牌。如果不是,则应刷新并重新发送请求。

问题是我不知道如何将 next.handle() 返回的原始 Observable 替换为新的。之前的 return 语句this.userService.refreshLoginToken().subscribe()返回一个 Subscription 对象。如果我只是通过管道传输它的结果refreshLoginToken()将不起作用,因为 refreshLoginToken 发送一个 httprequest,该请求仅在有订阅时执行。

将问题简化为一行:如何将第 1 行中由 next.handle() 返回的 Observable 替换为由返回的 Observable this.intercept(req, next)

谢谢!

0 投票
5 回答
298 浏览

angular - 如何删除 RXJS 中的冗余请求?

我正在使用 Rxjs 和 Angular 框架进行前端项目,我想从 api“api/data_processor_classlib.php....”获取 json 数据。在 HTML 中订阅了管道 this.webProtectionHTML$ 的三个部分。我不知道为什么管道 this.webProtectionHTML$ 发出了 3 次请求。是否有任何可能的解决方案只发送一个请求并更新 HTML 中的所有数据?谢谢。

HTML 代码:

零件:

网络日志:

在此处输入图像描述

0 投票
2 回答
55 浏览

javascript - 使用 http 客户端从服务器获取值并将其用于后续步骤

我有一个如下函数,我需要调用服务器并获取函数返回的值。我正在使用 rxjs 订阅。我得到了值,但由于 rxjs 是异步的,因此函数在从服务器获取值之前返回。下面是一个伪代码来解释我想要做什么:

我知道 susbscribe 会立即返回,因此函数 getValue 不会从服务器返回值。有没有一种方法可以使函数仅在可观察返回时才返回值?

0 投票
2 回答
249 浏览

rxjs6 - 我如何使用 rxjs 忽略第二个、第三个按钮单击,直到我的第一个按钮单击过程完成

我的 HTML 有以下代码:

在我的 ts 文件中,我有以下内容:

当我单击该按钮两次时,会进行两次服务调用。我不希望这种情况发生。相反,应忽略后续点击。

我怎样才能做到这一点?

0 投票
2 回答
70 浏览

rxjs - 当您订阅 rxjs 时,如果测试失败,您如何向测试发出信号?

我是一个完整的初学者。我遇到的问题是,一旦我在 rxjs observable 中抛出错误,我的测试就不知道了。当我订阅测试时,它在 rxjs 中失败了,它只会抛出一个错误,我需要通知我的测试发生了错误。这是一个更简单的示例,它表明从未打印过“测试失败”。

有没有办法处理这个?我很感激任何帮助。

0 投票
3 回答
813 浏览

arrays - 如何使用 RxJs 将两个数组组合成一个数组,其中第二个数组的每个元素将分配给每个对象属性的第一个数组?

我有两个接口,分别是 Team 和 Company

这是样本数据:

所以我想根据companyId将company作为财产分配给每个团队。像这样:

那么如何使用 RxJs 实现这一点。我有两个分别返回 Team[] 和 Company[] 的 Observable 的 observable。

那么,如何做到这一点?我知道它可以以命令式的方式完成(通过使用循环、if-else 等),但我想通过只使用反应式运算符、观察者来以反应式的方式做到这一点。

0 投票
2 回答
1948 浏览

angular - 如何完成 rxjs switchmap observable?

我在我的 Angular 8 项目中有一个 observable,并订阅了 ngOnInit()。

但是 complate 方法不会触发订阅。

我订阅的chartData类型是BehaviourSubject. 所以我不订阅urlSubject。因为 url 可能随时更改搜索或过滤参数。

我正在使用finilize,但它不起作用。我认为这个问题与 switchmap 内部孔隙有关。如何完成并将加载设置为 false?

0 投票
1 回答
112 浏览

angular - Angular8 中的行为主体和可观察对象

我得到了 3 次调用的休息服务数据调用。我需要创建一个数据服务来减少一次调用,以便它保留一个本地副本。如果尚未填充副本,它会点击 api 来获取它们。它应该只执行一次。因此,需要一个指示 get 调用状态的布尔值。如果尚未调用获取数据,请切换布尔值并获取数据。我知道如果组件订阅 observable 可以做到这一点,并且当数据服务有数据时,它将通过 BehaviorSubject 提供它。但是不确定如何实现它,因为我没有使用可观察对象和行为主题。对此的任何指导表示赞赏。谢谢。

这是我的示例 stackblitz https://stackblitz.com/edit/angular-sqxp9e?file=src%2Fapp%2Fnotifications-data.service.ts