Angular RxJS Nested Subscribe с несколькими запросами Http - PullRequest
0 голосов
/ 03 июля 2018

Я хотел бы знать, что является наилучшей практикой при выполнении http-запроса один за другим, особенно, мне потребуется использовать возвращаемое значение из первого запроса. В настоящее время у меня есть вложенная подписка для решения этой проблемы [см. Код ниже].

Я пытался с siwtchMap, mergeMap & concat из RxJS, но, похоже, это не сработало. Любое предложение поможет.

onStartUp() {
    this.recordingService.getRecording(this.id)
     .subscribe(x => {
       this.recording = x;
       const params = new Chunk(this.recording, 0, 30);
       this.recordingService.getSignal(params)
        .subscribe(data => console.log(data));
     });
  }

1 Ответ

0 голосов
/ 03 июля 2018

Почему в вашем случае не работает switchMap? Я думаю, что это лучшее решение, switchMap получает результат потока и возвращает другое наблюдаемое для продолжения потока:

onStartUp() {
   this.recordingService.getRecording(this.id)
   .switchMap((x) => {
       this.recording = x;
       const params = new Chunk(this.recording, 0, 30);
       return this.recordingService.getSignal(params);  
   })
   .subscribe(data => console.log(data));
 }

Если вы используете конвейерные операторы:

import { switchMap } from 'rxjs/operators';

this.recordingService.getRecording(this.id)
  .pipe(
      switchMap((x) => {
          this.recording = x;
          const params = new Chunk(this.recording, 0, 30);
          return this.recordingService.getSignal(params);  
      })
  )
  .subscribe(data => console.log(data));
...