在 Angular 中按顺序运行一组 http 调用

Chr*_*ton 2 rxjs angular

我已经多次看到这个问题,但我不知道如何实现这个问题来解决我的问题。

我基本上有一组需要按顺序执行的 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'),
];
Run Code Online (Sandbox Code Playgroud)

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

forkJoin(observableBatch).subscribe(result => {
  // success
}, error => {
  // log error
}); 
Run Code Online (Sandbox Code Playgroud)

我读到 usingconcatMap可能是答案,但我如何在可观察数组上使用它?

Gho*_*med 5

尝试使用 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
}); 
Run Code Online (Sandbox Code Playgroud)