如果状态正常,我必须进行多次同步网络通话,一个接一个。
可怕但有效的代码:
this.api.post1().subscribe((data: any) => {
if (data.status== 'OK') {
this.api.post2().subscribe((data: any) => {
if (data.status== 'OK') {
this.api.post3().subscribe((data: any) => {
if (data.status== 'OK') {
this.api.post4().subscribe((data: any) => {
if (data.status == 'OK') {
// Do something
}else{
console.log('error: ' + data.status);
}
});
}else{
console.log('error: ' + data.status);
}
});
}else{
console.log('error: ' + data.status);
}
});
}else{
console.log('error: ' + data.status);
}
});
我尝试使用 concatMap
const post1$ = this.api.post1();
const post2$ = this.api.post2();
const post3$ = this.api.post3();
const post4$ = this.api.post4();
from([post1$, post2$, post3$, post4$]).pipe(
concatMap(a => a)
).subscribe(res => console.log(res));
但我需要检查每个答案是否都可以。有一个漂亮的解决方案吗?