问题标签 [rxjs-pipeable-operators]

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 回答
35 浏览

typescript - 为什么将 RxJS 升级到 v6.3 后 map 不起作用

我有一个与这篇文章中描述的案例类似的案例。

我有一个用户登录服务,它(除其他外)验证用户的令牌是否仍然有效。服务器的响应在一个接口中定义:

我的目标是创建一个 observable,它会根据用户是否经过验证返回一个布尔值。此代码适用于 RxJS v6.2:

但是,现在我已经将 RxJS 更新到 v6.3,我收到了这个错误:

这让我很困扰,因为我使用这种将 API 响应映射到内部类或原语的方法(在其他地方我有一个使用http.get<T>. 6.3. 我可以按照上述帖子的答案中的描述重写所有这些,但我想返回一个布尔值,我认为我的方法看起来更清晰。

有什么建议么?

0 投票
2 回答
342 浏览

javascript - 如何通过 rxjs 运算符操作从请求中获取的对象?

我的问题是:如何操作从 http 请求获得的对象列表中的对象。例如,我收到一个包含每个对象的对象列表,例如

我需要修改为

我的代码

0 投票
1 回答
1015 浏览

angular - Angular中的嵌套订阅,第一个结果迭代

从今天早上开始,我正在尝试解决一个非常令人头疼的问题。

我将首先解释(非常简单的)情况。

我创建了组,它由一个标题和一个成员数组组成,仅由它们的 id 字符串给出。

现在,我想显示这些组。是不是很简单?但是,我当然不想只显示成员的 ID,而是显示组用户的完整信息(例如基本上他们的名字......)。

所以,我当然有一个获取所有组的服务,以及另一个通过 ID 获取用户的服务。

在 React 中,因为我没有使用 rxjs,所以我不会有任何问题;async/awaits 和 Promise.all 可以解决问题。

但是在这里,在渲染之前尝试获取完整信息(调用 2 个服务)时会出现几个问题,例如:1.我想获取组 2.对其进行迭代 3.对组成员进行迭代 4.最终为每个成员获取它的标识。因此,例如,每个组都可以有一个 groupcompleteusers 数组,每次我从 id 获取有关用户的信息时,我都会填写它...

所以我尝试了以下方法:
- 首先我尝试使用 async/await、Promises,但由于我正在调用返回 Observables 的服务,所以我有点迷失了。
- 然后我尝试嵌套订阅。但是,我完全无法正确编写它,因为我不仅要迭代组,还要迭代 group.members (在嵌套订阅时不存在,因为组当时是一个 Observable。 ..)

因此,使用 angular 7/rxjs 6,我尝试了以下操作:

当然,它不起作用,尤其是 group.members 当时不存在......

所以我有点卡住了。

也许有些人有线索?

谢谢!

0 投票
1 回答
111 浏览

angular - 如何将操作员输入和延迟操作的结果结合在一起

我试图在下面的示例中缩减我的用例。

我被困在我需要传递应该有的操作员结果的地方

  • 运算符的输入传递
  • 和内部延迟操作的结果 concatMap

这样我就可以使用下一个运算符。

网址:https ://stackblitz.com/edit/rxjs-defer?file=index.ts

0 投票
1 回答
461 浏览

observable - 链 3 个或更多依赖的 observables

我知道这个问题在这里之前已经被问过。但是接受的解决方案对我不起作用,或者我无法很好地理解它。

我正在使用 ng-7 我有简单的用例:

我有 2 个 API,第 2 个取决于第 1 个的响应。我订阅了第一个 API 的结果,然后使用管道订阅了第二个 API 结果。

我的代码如下所示;

现在在订阅第二个 API 响应之前,我想订阅另一个 observable 说:

this._tokenService.getToken.pipe(

)

并想在服务 2 中使用它的响应。这样:

API1 => 令牌 => API2

请建议如何实施。

更新:

我试图实现,下面是我的实现:

有人可以验证上述实施是否可行或建议正确的方法吗?

0 投票
1 回答
407 浏览

angular - 实现 RxJs 运算符而不是嵌套的订阅块

id路由参数中得到一个,并且我正在传递给我的 API 调用。为此,我目前正在使用嵌套订阅。但是我想使用RxJsconcat()的或者其他一些操作符(我不知道是哪个),这样我就可以避免嵌套。由于这里的文档没有给出一些例子,这让我很困惑,我如何在我的代码中使用它。

下面是实现嵌套的代码,我想使用concat()RxJs 或其他一些运算符来实现相同的逻辑。

0 投票
2 回答
935 浏览

angular - catchError 后合并管道死机

我正在尝试使用 Angular 材质分页器和排序,并从 material.angular.io 示例中获取一些代码。这部分:

当服务器返回错误并 catchError 处理它时,排序 ang paging stopt 以向服务器发送请求。他们的例子有什么问题?

0 投票
2 回答
730 浏览

angular - 无法在 angular4 中使用 rxjs 的过滤器运算符

我正在尝试在角度 4 中使用过滤器,这是我的代码

这是我的角度版本,我使用ng --version命令发现的

但是当我编译时,我收到这样的错误

E:/angular-mock/routes/src/app/app.component.ts (19,19) 中的错误:算术运算的左侧必须是“任何”、“数字”或枚举类型.

谁能帮我解决我在这方面做错了什么

0 投票
2 回答
197 浏览

angular - 通过带有 rxjs 的管道运算符获取更多详细信息

在我的服务中,我想要获得一个对象,但在将它返回到我的组件之前,我还想要该单个对象的详细信息。

使用管道运算符,我尝试调用可以为我提供详细信息的函数(在本例中Bar)。

但是我有点迷失了如何做到这一点,因为我返回observable<Bar>而不是Bar.

0 投票
0 回答
111 浏览

angular - 可观察内部可观察并将结果合并到其他

我正在尝试将多个可观察对象合并在一起。一般来说,我正在尝试使用角度 httpClient 请求一个 xsd 文件并使用 xml2js 库对其进行解析。问题是这个 xsd 文件包含引用外部文件的导入语句。

所以我想做的是以下几点:

  1. 请求主 xsd 文件
  2. 解析主 xsd 文件(rxjs 映射运算符)
  3. 处理该文件中的所有导入语句
  4. 递归所有 1. 对于每个导入(使用 forkJoin 运算符合并这些)
  5. 将已解析的导入与已解析的主 xsd 文件合并

    /li>

上面的代码一直有效,直到为导入的文件之一执行带有 mergeMap 的管道。我认为如果文件中没有导入,则返回一个空的 observable 可能是个问题。到目前为止,我无法弄清楚如何将导入包含在我的主要 xsd 对象中。

我尝试制作一个演示来显示当前状态和问题: https ://stackblitz.com/edit/angular-x26paa