Как вернуть `forkJoin`, наблюдаемый при передаче операторов - PullRequest
0 голосов
/ 29 мая 2018

Раньше у меня был этот распознаватель, который просто работал нормально:

resolve() {
    return forkJoin(
        this.getData1(),
        this.getData2(),
        this.getData3()
    );
}

Теперь я должен сделать что-то вроде того, что на самом деле не работает:

  resolve() {
    return this.actions$
      .pipe(
        ofActionSuccessful(SomeSctonSuccess),
        forkJoin(
           this.getData1(),
           this.getData2(),
           this.getData3()
        )
      );
    }

, когда я нажимаюэта ошибка:

Аргумент типа 'Observable <[any, any, any, any]>' не может быть назначен параметру типа 'OperatorFunction'.Тип 'Observable <[any, any, any, any]>' не обеспечивает совпадения для подписи '(источник: Observable): Observable'.

Есть идеи, как исправить?

Теперь я должен вернуть свой forkJoin только после того, как ofActionSuccessful(SomeSctonSuccess) происходит https://ngxs.gitbook.io/ngxs/advanced/action-handlers

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Благодаря @Sajeetharan, глядя на этот url в конечном итоге используется exhaustMap

  resolve() {
    return this.actions$.pipe(
      ofActionSuccessful(LoadOnPremHostSuccess),
      exhaustMap(() => {
        return forkJoin(
          this.getData1(),
           this.getData2(),
           this.getData3()
        );
      })
    );

}

0 голосов
/ 29 мая 2018

Используйте оператор exhaustMap.Он сопоставляется с внутренней наблюдаемой, игнорируя другие значения, пока эта наблюдаемая не завершится

import { forkJoin } from 'rxjs';
import { exhaustMap } from 'rxjs/operators';

resolve() {
    return this.actions$
      .pipe(
        ofActionSuccessful(SomeSctonSuccess),
        exhaustMap(() => {
         return forkJoin(
             this.getData1(),
             this.getData2(),
             this.getData3()
           )
       })

      );
    }
...