Как повторно передать тему несколько раз в цикле Foreach?

Я пытаюсь подписаться на тему, которая будет переиздаваться несколько раз в файле 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);
      })

    });

  }

person Allen    schedule 19.08.2019    source источник
comment
вероятно, лучше испустить объект массива за один раз   -  person Fan Cheung    schedule 19.08.2019
comment
Измените switchMap на mergeMap. switchMap отменяет ваш предыдущий ответ API и выдает только последнее значение API.   -  person user2216584    schedule 19.08.2019
comment
@ user2216584, спасибо, работает   -  person Allen    schedule 20.08.2019
comment
если приведенные выше ответы решают вашу проблему, вы должны опубликовать это как ответ.   -  person    schedule 23.08.2019


Ответы (1)


Измените switchMap на mergeMap. switchMap отменяет ваш предыдущий ответ API и выдает только последнее значение API. Ответ выше работает, на который отвечает @user2216584. Спасибо.

person Allen    schedule 26.08.2019