Angular httpClient 返回的 observable 是 cold 的,没人 subscribe 是不会发出去的。你就大大方方准备好 30 个 request 然后根据配置筛选出你需要的,然后用rxjs的 forkJoin/zip/combineLatest 再 subscribe 总的结果就 ok.
let requests = [];
for(let i=0; i<30; i++) {
requests.push(this.httpClient.get(`/url`,{params: new HttpParams({id: i})}));
}
let selected = [0,1,2,3,7,8,12];
let selectedRequests = selected.map(index => requests[index]);
forkJoin(selectedRequests)
.subscribe(data => {
// data
this.btnDisabled = false;
})
另外,为什么要发多个请求呢?让这个 API 能接受多个参数不就 ok 么?发一个请求就行。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…