将并行可观察响应更改为顺序响应

时间:2020-08-05 10:37:00

标签: javascript angular typescript rxjs

我有此方法作为遗留代码,可以处理并执行多个api http调用并返回平整的observables,并且由于forkJoin,所有过程都是并行的,并且由于某些原因,我想将过程更改为顺序的,我已经阅读了一些文章,其中大多数都建议使用concatMap,但实际上我不知道在代码中使用concatMap的正确方法,而且我不知道其他任何方法。

这是方法:

handleDataPost(list: Array<{ url: string, data: any }>): Observable<any> {
console.log('start data posting');
const observables: Array<Observable<any>> = [];
list.forEach(eachRequestObject => {
  observables.push(this.apiService.postData(eachRequestObject.url, JSON.stringify(eachRequestObject.data)));
});
console.log('list of observables', observables);
return forkJoin(observables);
}

1 个答案:

答案 0 :(得分:1)

又甜又甜:

import {concat} from "rxjs";

...

return concat(...observables);

From the docs

创建一个输出Observable,该输出依次从给定的Observable发出所有值,然后移至下一个。