Я пытаюсь подписаться на тему, которая будет переиздаваться несколько раз в файле forEach. Но я получил только одну подписку, на самом деле ожидается 7 раз.
Я несколько раз пытался отложить выполнение метода «next()» с помощью setTimeOut. Но это не работает. Angular Cli: 6.2.9 Node: 10.15.3 ОС: win32 x64 rxjs: 6.2.2 машинопись: 2.7.2
private selectedVersion$: Subject<LeadTimeVersion> = new Subject<LeadTimeVersion>();
productLineId: string;
nodes: LeadTimeNode[] =[];
filterNodes: LeadTimeNode[];
versions: LeadTimeVersion[];
constructor( private leadTimeService: LeadTimeService) { }
ngOnInit() {
...
let counter = 0;
this.selectedVersion$.pipe(
switchMap(v => this.leadTimeService.getLeadTimeVersionData(this.productLineId, v.id)),
takeUntil(this.unsubscribe)
).subscribe(x => {
this.nodes = mergeArray(this.nodes, x.nodes);
counter++;
if(counter === this.versions.length){
this.filterTables('');
}
});
this.leadTimeService.selectedLeadTimeWorkbench$.pipe(
takeUntil(this.unsubscribe)
).subscribe(x => {
this.productLineId = x.id;
this.versions = x.workingVersions;
this.versions.forEach(v => {
this.selectedVersion$.next(v);
})
});
}
switchMap
наmergeMap
.switchMap
отменяет ваш предыдущий ответ API и выдает только последнее значение API. - person user2216584   schedule 19.08.2019