首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在角2中进行并行调用http获取或post调用

在角2中进行并行调用http获取或post调用
EN

Stack Overflow用户
提问于 2018-01-17 12:02:07
回答 1查看 2.3K关注 0票数 4

如何在角2中进行并行调用、HTTP或post调用?

我有两个服务电话,关于一个愈伤组织的反应必须打另一个电话。

有人能建议我如何用错误处理方案调用这些并行调用吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-17 12:06:21

如果您的服务是基于Observable的,而不是基于Promise的,则可以执行forkJoin。它并行运行所有可观测的序列。

RxJS版本<6

代码语言:javascript
复制
import 'rxjs/add/observable/forkJoin';

确保从import forkJoin库中提取rxjs

代码语言:javascript
复制
Observable.forkJoin(myService.getCall(),
            myService.postCall(),
            ...)
            .subscribe((res) => {
              res[0] // this is first service call response,
              res[1] // this is second service call response
              ...
});

或者,如果您希望它是顺序的,那么执行第一个调用,然后执行完全调用。

代码语言:javascript
复制
myService.getCall().subscribe((response) => {
  // handle response
}, (error) => {
  // handle error here
}, () => {
  // this is complete block and it is triggered when obervable is complete
  myService.postCall();
}

编辑: for RxJS 6及更高版本forkJoin已更改

服务:

代码语言:javascript
复制
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { forkJoin, Observable } from 'rxjs';

@Injectable()
export class MyService {

  constructor(private  http: HttpClient) {
  }

  getAndPost(): Observable<any> {
    return forkJoin(
      this.http.get('/api/get'),
      this.http.post('/api/post')
    );
  }
}

构成部分:

代码语言:javascript
复制
firstResponse: any;
secondResponse: any;

constructor(private myService: MyService) {
}

myFunction(): void {
  this.myService.getAndPost().subscribe((res) => {
    this.firstResponse = res[0],
    this.secondResponse = res[1]
  });
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48300711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档