这是一个简化的场景:
of([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
.pipe(
map((data) => {
let arr: Observable<any>[] = [];
for (let elem of data) {
let obj = {
title: 'foo' + 'elem',
body: 'bar' + 'elem',
userId: elem,
};
arr.push(
this.http.post(
`https://jsonplaceholder.typicode.com/posts`,
obj,
{
headers: {
'Content-type': 'application/json; charset=UTF-8',
},
}
)
);
}
return arr;
}),
concatMap((data) => forkJoin([...data])),
)
.subscribe((data) => console.log(data));
我的理解是,在这种情况下,所有请求都将并行触发,因为这就是 forkJoin([...data]) 的作用。我试图弄清楚如何仅在前一个请求完成(成功或失败,无关紧要)的情况下才触发请求。
如果有任何建议或帮助,我将不胜感激。谢谢。
最佳答案
只需使用 concat 而不是 forkJoin
concatMap((data) => concat(data)),
关于angular - RxJS 如何按顺序发出 POST 请求,只有在前一个请求完成后才会触发新请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76546943/