2 votes

rxjs concatMap ne semble pas être appelé

La 2e concatMap n'est pas appelé.

this.apiService.get()
               .pipe(
                   concatMap((data: MyModel) => {
                       if (data) {
                           // the following returns a MyModel Observable
                           return this.apiService.update(data);
                       } else {
                           return empty();
                       }
                   }),
                   concatMap((data: MyModel) => this.apiService.update(this.myOtherData))
               )
               .subscribe(data => log('completed'));

Des idées ?

0voto

BenRacicot Points 869

Il faudrait doubler les tuyaux. Jetez un coup d'oeil ici : https://github.com/reactivex/rxjs/issues/4071

timer(10).pipe(
  concatMap(() => from(wait(20)).pipe(
    concatMap(() => {
      console.log('here');
      return from(wait(20)).pipe(
        tap(x => console.log('>', x))
      );
    })
  ))
)
.subscribe(x => console.log('>', x));

Tu sais que concatMap nécessite un observable pour être retourné ? Je viens d'apprendre que s'il y a un problème avec l'observable source, concatMap ne fonctionnera pas. Je suis resté bloqué en essayant de résoudre le problème de concatMap alors que ce n'était pas la cause.

C'est également de cette façon que j'ai résolu le problème, en envoyant un observable vide pour m'assurer que ma configuration était correcte.

this.sendRequest({'search': "be"}).pipe(
    concatMap(options => {
        console.log(options);
        return of([]);
    })
).subscribe(data => {
     console.log(data);
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X