我有一個包含 ID 的陣列,我想以有序的方式為陣列中的每個 ID 訂閱一個 observable(請求 id 1 然后 2 ...)。我試過 foreach 回圈,但回應是無序的。并嘗試創建一個 for 回圈并增加訂閱者的索引,但瀏覽器崩潰了(因為在索引更改之前已經發送了大量請求)
我的代碼:
const uniqueGroups=[1,2,3,4,5,6];
uniqueGroups.forEach(groupId => {
this.magB1BaseService.getAttributeGroup(groupId)
.subscribe(data => {
this.AttributeGroups.push(data);
this.AttributeGroupsCollapses[data.ID] = false;
});
});
uj5u.com熱心網友回復:
實作這一點的一種方法如下所示:
const uniqueGroups = of(1, 2, 3, 4, 5, 6);
uniqueGroups.pipe(concatMap(groupId => (
this.magB1BaseService.getAttributeGroup(groupId))
.subscribe(data => {
this.AttributeGroups.push(data);
this.AttributeGroupsCollapses[data.ID] = false;
})));
uj5u.com熱心網友回復:
使用 concat 運算子進行一一訂閱。
const uniqueGroups = [1,2,3,4,5,6];
let obs: Array<Observable<any>> = [];
uniqueGroups.forEach( groupId => {
obs.push(this.magB1BaseService.getAttributeGroup(groupId));
});
concat(...obs).subscribe( data => {
this.AttributeGroups.push(data);
this.AttributeGroupsCollapses[data.ID] = false;
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392340.html
上一篇:Angular-“OperatorFunction<IUser,void>”型別的引數不可分配給“OperatorFunction<Object,void>”型別的引數
