首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >RxJS -解析多个服务器调用

RxJS -解析多个服务器调用
EN

Stack Overflow用户
提问于 2017-09-11 06:28:07
回答 1查看 885关注 0票数 2

我在角4中使用RxJS来组成异步调用。

我需要调用服务器,获取响应并使用它进行另一次调用,获取响应,并使用它进行另一次调用等等。我正在使用下面的代码进行此操作,此代码的工作原理与预期相同。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id;
name;
ngOnInit() {
    this.route.params
      .flatMap(
      (params: Params) => {
        this.id = params['id'];
        return this.myService.get('http://someurlhere');
      }
      )
      .flatMap(
      (response: Response) => {
        return this.myService.get('http://someurlhere');
      })
      .flatMap(
      (response: Response) => {
        return this.myService.get('http://someurlhere');
      })
      .subscribe(
      (response: Response) => {
        FileSaver.saveAs(blob, this.name );
      },
      (error) => {        
        console.log('Error ' + error)
      }
      )
  }

现在,我需要对它做些改变。在第一个flatMap中,我需要进行两个rest调用,只有当这两个调用都得到解决时才继续进行。不仅如此,其中之一的响应将传递到下一个flatMap,因为另一个调用只会填充一个变量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id;
name;
ngOnInit() {
    this.route.params
      .flatMap(
      (params: Params) => {
        this.id = params['id'];
         // this is the 2nd REST call. It just populates a variable, so don't need the output to be passed to next flatMap. However, both the URLs in this section should resolve before the next flatMap is executed.
        this.name = this.myService.get('http://someotherurlhere');
        return this.myService.get('http://someurlhere');
      }
      )
      .flatMap(
      (response: Response) => {
        return this.myService.get('http://someurlhere');
      })
      .flatMap(
      (response: Response) => {
        return this.myService.get('http://someurlhere');
      })
      .subscribe(
      (response: Response) => {
        FileSaver.saveAs(blob, this.name );
      },
      (error) => {        
        console.log('Error ' + error)
      }
      )
  }

因此,我的问题是,应该如何编写这段代码,以便从服务器获得响应,但在移动到下一个平面图之前,等待其他rest调用也完成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.name = this.repoService.getDocProperties(this.objectId);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-11 06:37:13

您可以将异步调用与forkJoin结合起来。

在您的情况下,您有两个电话:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.myService.get('http://someotherurlhere');
this.myService.get('http://someurlhere');

它们可以这样组合在一起:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let call1 = this.myService.get('http://someotherurlhere');
let call2 = this.myService.get('http://someurlhere');
return Observable.forkJoin([call1, call2])

当您订阅(或链接其他函数)到可观察的连接时,返回的数据将位于数组中。因此,call1的结果将位于索引0,而call2将位于索引1。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Observable.forkJoin([call1, call2]).subscribe((results) => {
  results[0]; // call1
  results[1]; // call2
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46158118

复制
相关文章
RxJS 处理多个Http请求
有时候进入某个页面时,我们需要从多个 API 获取数据然后进行页面显示。管理多个异步数据请求会比较困难,但我们可以借助 Angular Http 服务和 RxJS 库提供的功能来实现上述的功能。处理多个请求有多种方式,使用串行或并行的方式。
阿宝哥
2019/11/05
5.8K0
Rxjs源码解析(一)Observable
通过 new Observable() 方法创建了一个可观察对象 observable,然后通过 subscribe 方法订阅这个observable,订阅的时候会执行在 new Observable时候传入的函数参数,那么就来看下 new Observable到底做了什么
阿珍
2022/07/01
1.7K0
Angular 使用 RxJS 优化处理多个Http请求
注意:上面的this.http.get... 处理HTTP最好放到单独的Service文件中,再注入到Component。这里为了演示没有这么做。
mafeifan
2019/03/15
4.2K0
【Rxjs】Rxjs_Subject 及其衍生类
在 RxJS 中,Observable 有一些特殊的类,在消息通信中使用比较频繁,下面主要介绍较常用的几个类:
CloudCat
2019/05/26
9070
nginx 代理多个服务器——多个server方式
上一篇文章(http://blog.csdn.net/wild46cat/article/details/52840125)介绍了nginx的基本配置和使用方法,并且简单的介绍了一下如何利用nginx结合tomcat进行使用,达到反向代理的作用。现在我们要使用nginx达到这样的一个目的,能够代理多个服务器。
Java架构师必看
2021/05/14
7.1K0
nginx 代理多个服务器——多个server方式
emlog模板调用多个侧边栏教程
正在写新板子,想尝试一下三栏的,但是不知道如何调用多侧边栏。查了emlog官方文档(5.0 版以后的),可以调用多个多个侧边栏。下面emlog官方文档原文:
用户8099761
2023/05/10
3500
RxJS Observable
这两个模式是 Observable 的基础,下面我们先来介绍一下 Observer Pattern。
阿宝哥
2019/11/05
2.4K0
Rxjs入门
Rxjs英文官网域名已经变为 https://rxjs-dev.firebaseapp.com/
lilugirl
2019/05/28
1.1K0
Rxjs入门
RxJS福利~~
作者介绍: 郑丰彧 RxJS 中文社区创建者,Nice Angular 社区成员,Angular、RxJS 爱好者,同时也十分关注 React 的发展。 Github:github.com/Sang
用户1687375
2018/06/08
2.1K0
RxJS速成
RxJS是ReactiveX编程理念的JavaScript版本。ReactiveX是一种针对异步数据流的编程。简单来说,它将一切数据,包括HTTP请求,DOM事件或者普通数据等包装成流的形式,然后用强大丰富的操作符对流进行处理,使你能以同步编程的方式处理异步数据,并组合不同的操作符来轻松优雅的实现你所需要的功能
solenovex
2018/03/25
4.2K6
RxJS速成
RxJs简介
这两年,各种异步编程框架,上面RxJava,RxAndroid,RxSwift等等,今天要聊的是RxJs,对于我等入门不久的前端工程师来说,这个框架还是比较有新颖的,中文官网地址:http://cn.rx.js.org/
xiangzhihong
2022/11/30
3.7K0
springMvc 对多个视图后缀解析
springMvc 对多个视图后缀解析 如何配置? 代码如下:可以参考: <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="1"> <property name="prefix" value="/views/"/> <property name="suffix" value=".jsp"/> </bean> <bean class="org.sprin
爱明依
2019/03/12
1.2K0
可以同时解析多个binlog吗
其次,当我们采用这种方式解析binlog时 $ mysqlbinlog -vvv --base64-output=decode-rows --start-position=4 --stop-position=2000 binlog.000001 binlog.000002 时,它的工作方式是这样的:
老叶茶馆
2022/12/02
1K0
RxJS -- Subscription
Subscription是什么? 当subscribe一个observable的时候, 返回的就是一个subscription. 它是一个一次性对象(disposable), 它有一个非常重要的方法
solenovex
2018/03/29
9840
RxJS -- Subscription
RxJS教程
拉取? 由消费者来决定何时从生产者那接收数据,生产者本身不知道数据何时交付到消费者手中的。
全栈程序员站长
2022/06/29
1.8K0
RxJS Subject
观察者模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。
阿宝哥
2019/11/06
2K0
finecms如何调用多个栏目的子栏目
  前面我们说到了finecms如何调用多个指定栏目的内容,finecms如何调用多个栏目的子栏目呢?用下面的代码就可以实现了,其中id是具体的栏目id,用“,”逗号隔开             {list action=category id=24,25,26,27,28,29,30} {if $t.
ytkah
2018/03/06
2.8K0
EMLOG调用指定多个分类文章列表代码
对于SQL命令不是很熟悉,昨日想用EMLOG做一个文章类表调用,需要用到SQL命令代码,调用指定多个分类EMLOG文章列表,研究了好些时间没整明白,求人也不是个事,只好自己继续边看教程边测试,功夫不负有心人,最终给我整明白了,用这个SQL命令可以正确调用指定多个分类的EMLOG文章列表,分享给有需要的站长们,把以下代码复制到模板的module.php文件中,设置好需要调用的分类ID号,在前台模板里写入调用代码就可以实现你想要的效果了。
用户8099761
2023/05/10
4150
点击加载更多

相似问题

多个顺序api调用RxJs

29

角解析Rxjs映射和订阅多个APIs

11

在RxJS中组合多个http调用

123

使用rxjs shareReplay防止多个api调用

17

基于多个依赖API调用的RXJS

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文