rxjs concatMap, кажется, не вызывается - PullRequest
0 голосов
/ 04 ноября 2018

2-й concatMap не вызывается.

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'));

есть идеи?

1 Ответ

0 голосов
/ 16 мая 2019

Тебе придется удвоить трубу. Посмотрите здесь: 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));

Вы знаете, как concatMap требует, чтобы наблюдаемое возвращалось? Ну, я только что узнал, что если есть проблема с этим источником, concatMap не сработает. Я был в тупике, пытаясь устранить неполадки concatMap, когда это не было причиной.

Так я и устраняю неполадки, отправляя пустую наблюдаемую, чтобы убедиться, что мои настройки были правильными.

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