Как применить switchMap по условию?

#javascript #rxjs

#javascript #rxjs

Вопрос:

У меня есть следующие rxjs:

 let state = true;

  iif(
            () => this.mode === MODES.CREATE,
            this.applicationOrderParcelsRepository.create(data).pipe(switchMap(() => this.egrnService.SendRequestGetEGRP())),
            this.applicationOrderParcelsRepository.update(data),
        )
            .pipe(indicate(this.loading$), observableHandlerResponse(this.messageService))
            .subscribe((document) => {
                this.changeDetection.detectChanges();
                this.dialogRef.close(document);
            });
  

Моя проблема в том, что я хочу выполнить this.egrnService.SendRequestGetEGRP() только в том случае, если первый запрос выполнен и state = true . Как это сделать?

Ответ №1:

Вы должны иметь возможность добавить условие к вашему switchMap , как это:

 switchMap(() => {
  if (state /* or any other condition */) {
    return this.egrnService.SendRequestGetEGRP();
  } else {
    return EMPTY; // or NEVER; which you should be able to import from 'rxjs' package
  }
})