bugfix> angular > 投稿

httpリクエストを次々と作成する際のベストプラクティスを知りたいです。特に、最初のリクエストからの戻り値を使用する必要があります。現在、この問題を達成するためにネストされたサブスクリプションがあります[以下のコードを参照]。

RxJSのsiwtchMap、mergeMap、concatを試しましたが、うまくいかないようでした。任意の提案が役立ちます。

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 件
  • なぜ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));
    
    

あなたの答え