当前位置: 首页 > 知识库问答 >
问题:

RXJS运算符,将进行超文本传输协议调用,但将忽略数据并且不会返回可观察的

纪辰沛
2023-03-14

我想进行 HTTP 调用并将输出作为可观察的(这是简单的部分),然后立即进行另一个 HTTP 调用并忽略输出。

我不能使用switchMap操作符,因为第二个HTTP调用没有返回有用的东西。它只是返回“完成!”第一个调用返回我需要的复杂JSON。

我所做的,它的工作原理是订阅内部 HTTP 调用,我想知道是否有我可以使用的 RXJS 运算符:

this.dataStorageBaseService.createIdentity(identity)
  .do(() => this.authService.JustSimpleHTTPCall().first().subscribe()).subscribe();       

有没有一个RxJS操作符,我可以使用它来代替再次订阅“JustSimpleHTTPCall”?映射会很好,但我不需要JustSimpleHTTPCall返回的数据,它将无法与我需要作为可观察的返回的“createIdentity”输出一起工作。

共有2个答案

长孙智刚
2023-03-14

你只需要你的内部可观察量来发出外部结果 - 这可以通过concat完成

this.dataStorageBaseService.createIdentity(identity)
  .switchMap(result => this.authService.JustSimpleHTTPCall().concat(Observable.of(result)))
  .subscribe(...);
黎征
2023-03-14

你可以这样做:

this.dataStorageBaseService.createIdentity(identity)
  .concatMap(result => this.authService.JustSimpleHTTPCall()
    .map(() => result) // ignore the second response and use the first one instead
  )
  .subscribe(...);
 类似资料:
  • 我所做的: 我正在使用vertx rx超文本传输协议客户端来执行大量的HTTP请求。在这种情况下,我调用“方法A”,它返回一个ID列表。要接收所有ID,我需要多次调用方法A以获取下一批结果。(每次我指定一个不同的页码我想接收) 为了提高性能并尽可能并行地进行调用,我创建了一个(RxJava)可观察项目列表,每个项目代表单个页面请求的结果。当我完成创建此列表时,我调用Obserable.zip运算符

  • 我有一个通过HTTP服务获取数据并返回可观察对象的服务。 在第一次调用之后,我希望在服务内部缓存结果,一旦一个新组件尝试获取数据,它将从缓存的结果中获取数据。 有没有简单的解决方案?

  • 我正在使用certbot为我的网站创建SSL,并使用Nginx进行服务。然而,即使我在nginx conf中更改服务器块并重新启动它,只有原来的http工作,而https将返回ERR_CONNECTION_TIMED_OUT。 我在互联网上尝试了很多方法,包括将服务器块一分为二,调整listen 443设置,添加服务器名称。。。但所有这些似乎都不起作用,使用url和https将返回ERR_CONN

  • 我以前问过这个问题,但没有得到答案。我可以使用下面的方法:“get”让它工作,所以这没关系,但这次我需要使用post。在另一个项目中(使用react、redux、php、webpack、xampp),同样的问题再次出现,我正在努力解决它。这就是: register.php index.js 当我做了以上的一切是好的,数据是日志作为'做某事'。但是,当我尝试使用axios({方法:'POST'})并

  • 有人能向我解释一下为什么运算符可以接受返回或的函数吗? 官方文件说: FlatMap运算符通过将您指定的函数应用于源可观察对象发出的每个项目来转换可观察对象,其中该函数返回本身发出项目的可观察对象。 为什么它也可以返回数组? 例如,它们都是有效的: 但这不起作用:

  • 我有以下伪代码 我想要的是,我循环遍历一个对象数组,每个对象都获得相关的用户和产品,然后订阅用户和产品。我怎么能那样做?