我需要对API进行一系列调用(此序列的长度是可变的)。在每次迭代中,我只想在成功且没有向观察者返回错误的情况下继续。同样,这些请求不需要先前请求的任何数据。
我该如何实现此请求队列?
现在我将其视为递归调用直到请求数组结束的方法。
sendQueue(list: any[]) {
const {request, transferData} = list[0];
this.send(request, transferData).subscribe(msg => {
if (list.length > 0) {
this.sendQueue(list.slice(1));
} else {
return of(true);
}
}, err => {
this.ns.showError(err);
return of(false);
});
}
答案 0 :(得分:1)
您可以使用concat
。它将一个接一个地订阅每个源Observable,如果其中任何一个抛出错误,它将停止。
sendQueue(list: any[]) {
const sources = list.map(({ request, transferData }) => this.send(request, transferData));
return concat(...sources);
}