在Angular中顺序运行一系列http调用

时间:2019-07-03 10:52:40

标签: angular rxjs

我已经看过几次这个问题了,但是我无法解决如何解决这个问题。

我基本上有一个需要按顺序执行的http调用数组。具体来说,我需要执行一个,等待它返回然后执行下一个。

let requests = [
  this.http.post('http://localhost:4200/api/value', 'one'),
  this.http.post('http://localhost:4200/api/value', 'two'),
  this.http.post('http://localhost:4200/api/value', 'three'),
  this.http.post('http://localhost:4200/api/value', 'four'),
];

所以我当前正在使用forkJoin,但是这同时运行了请求,这不是我想要的。

forkJoin(observableBatch).subscribe(result => {
  // success
}, error => {
  // log error
}); 

我使用concatMap阅读可能是答案,但是如何在可观察变量数组上使用它呢?

1 个答案:

答案 0 :(得分:3)

尝试使用RXJS的 concat 功能,请尝试

import { concat } from 'rxjs';

let requests = [
  this.http.post('http://localhost:4200/api/value', 'one'),
  this.http.post('http://localhost:4200/api/value', 'two'),
  this.http.post('http://localhost:4200/api/value', 'three'),
  this.http.post('http://localhost:4200/api/value', 'four'),
];

concat(...requests).subscribe(result => {
  // success
}, error => {
  // log error
});