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

angular - 当服务器响应 400 http 错误时订阅未触发错误

我完全不知道为什么错误没有触发

这是我调用服务器的代码

此错误是未触发的错误

创建用户有以下代码

this.http 是来自 AngularCommon 的 HttpClient 和 headers 是

我有一个响应拦截器可以捕获每个错误响应,拦截器的重要代码如下

因为我只有在 http 错误为 401 时才让拦截器做某事,但我正在发送 400 错误我在拦截器上有一个 err 控制台日志,它可以很好地捕获错误,任何线索为什么它没有到达订阅?

我试图删除整个拦截器,但它也不起作用,所以我认为不是拦截器问题

0 投票
2 回答
90 浏览

rxjs - 如何按顺序在两个 Observable 之间切换并让订阅触发两次?

我正在使用 RxJS。我有两个 Observables(API 调用),它们为同一个数组返回不同数量的信息。我想在 Observables 之间切换并让订阅识别这两个结果,即每次返回值时触发。

这是一个使用 Typescript 的示例(这不起作用

上面的例子先检索callOne$,然后检索callTwo$,然后给我结果。相反,我希望两者的结果都按顺序排列。我将如何订阅 Observables 以便接收第一个结果,然后通过第二个调用进行更新?

0 投票
1 回答
31 浏览

node.js - 为什么我在订阅 patientAllergies observable 时会收到以下错误?

当我在 patient-allergies.component.ts 中选择添加按钮时,选择添加患者过敏的选项并单击保存,我收到以下错误:

ERROR 错误:尝试比较“[object Object]”时出错。只允许使用数组和可迭代对象。

我无法理解为什么我在将对象从 rest-api.service.ts 通过 _patientAllergies.next() 传递到数组时收到此错误。

病人过敏.component.html

患者过敏.component.ts

休息-api.service.ts

0 投票
1 回答
225 浏览

angular - Angular 8 中 Observable 中的类型转换问题

嗨,我正在学习 Angular 8,作为一名学习者,我有很多疑问。我正在详细分享我的一个疑问。我希望你们中的一些人可以轻松地帮助和纠正我。

我有一项服务使用 Web API 并返回一些公司详细信息,例如

服务.ts

组件.ts

IEmployee.ts

即使我使用 Observable 的Observable<IEmployee>. 那么这里有什么需要铸造的呢?当我投射到 Employee 并且我很容易获得非 Employee 数据时,它应该让我在控制台中出现一些警告或错误,对吗?我对正在发生的事情完全感到困惑。

有人可以帮我理解铸造的概念,并建议我正确使用铸造。

问候。

0 投票
1 回答
49 浏览

javascript - 如何将两种服务变成一种服务?

我有一个 Angular 8 应用程序和一个服务,如下所示:

我有一个组件,我在其中使用调用该方法的服务,如下所示:

但是我想直接在组件 SettingsAccountComponent 中调用:这个服务:

但问题是这样的:

因为我需要它来获取参与者 ID。但所以我的问题是,如何组合 ProfileService,像这样

与:

因为现在在 get() 方法中它需要一个 ParticipantId

那么我必须改变什么?

谢谢

0 投票
1 回答
674 浏览

angular - RxJS:从可能被多次调用的函数发出单个 API 请求

组件控制器:

拆分屏幕服务:

正如您在上面看到的,我正在从我的组件调用一个具有自定义“去抖动”功能的服务函数,以确保只有在上次调用后 500 毫秒内没有再次调用该函数时才会发生 API 请求。500ms内的任何调用都会取消之前设置的debounce函数发起API请求,并再次设置超时函数等待调用API请求。这可确保 API 仅被调用一次。

但是,如果我想将 API 请求的 observable 返回到我的组件控制器,我就会遇到如何从自定义去抖动/超时函数本身返回它的问题。目标是消除呼叫抖动,以便订阅者不仅只收到 1 个结果,而且之前的呼叫被取消(或根本不进行)。

0 投票
1 回答
324 浏览

angular - 订阅中的代码结束后 Rxjs 完成

我有一个 Angular 应用程序 (9),并且有多个组件请求计算操作而不是休息,并在不同的编辑器中显示结果。现在,在我发出请求之前,我调用了一个加载面板,在请求完成后,我在 finalize 回调中隐藏了加载面板。像这样的东西:

现在加载面板在设置所有编辑器值之前消失。如果请求完成,则直接调用 finalize 回调,但是如果 subscribe 或 error 内部的代码完成,如何调用诸如 finalize 之类的东西?

0 投票
3 回答
672 浏览

angular - 如何使用 Observable 每 1 秒(Angular 5)从数组中发出每个值?

我有一个产品列表和一个数组产品:Product[]

使用 Observable 和 Observer next 方法,我想每 1 秒后将每个产品发送到我的 UI。我怎样才能做到这一点?

这是我尝试过的,它正在产生一个无限循环。任何帮助将不胜感激。

0 投票
1 回答
152 浏览

rxjs - 如何让我的 observable 具有用于 NGRX 效果的值

老实说,我是 NGRX 的菜鸟,在 rxjs 方面的经验有限。但基本上我有类似这样的代码:

辅助方法:

}

所以基本上存储对象被填充,我可以得到它们。我知道“this.getCourseIdsFromFiltersByFilterType(args)”的可观察值确实与它们所在的“过滤器”的控制台日志一样工作。但手术时机不对。我一直在阅读,在尝试了 SwitchMap、MergeMap、Fork 之后就迷路了。一切看起来都还不错,但是当我尝试实际遍历集合以获取服务中可观察的结果时,它们还没有实现。我愿意尝试任何事情,但最简单的问题是:

需要以相似的顺序或非常接近的顺序调用两个可观察对象。他们的“结果”是 number[] 类型。具有此 number[] 应该能够包含的 'id' 属性的复杂类集合。当所有结果都不是异步的或在一个组件中时,这工作得很好。(我用变量来模拟静态值以检查我的“过滤器”然后“包含”逻辑并且它有效)但是在 NGRX 我有点迷失了它需要一个返回方法,我根本不够擅长 rxjs 来制定一种让它快乐的方法,并确保充分实现可观察对象的价值,使其从服务中得到适当使用。我再次可以看到我的“过滤器”控制台日志在那里。然而,当我做一个“长度”时,它总是为零,所以我知道某个地方存在时间问题。

0 投票
1 回答
87 浏览

angular - 以正确的方式导入 rxjs 模块

我想ofrxjs我的 Angular 8.2.3 项目中导入。但是,我看到这存在于 2 个位置 -

import { of } from 'rxjs/observable/of';

import { of } from 'rxjs/internal/observable/of';

我该走哪条路?