Эффекты NGRX - отображение действий для последовательных вызовов сервисов и обновления магазина - PullRequest
0 голосов
/ 11 октября 2018

Я хочу передать одно и то же действие 2 раза подряд с разными сущностями, например, я хочу добавить 2 сущности,

entity 1;
entity 2;
this.store.dispatch(new Add(entity1));
this.store.dispatch(new Add(entity2));

проблема, с которой я столкнулся, заключается в том, что я получил результат только одного действия(сущность 2 одна) и это результат моих действий.Я хочу дождаться результата первого действия, прежде чем пропустить второе действие.

@effect()
add$ = this.actions$
.ofType<Add>(ADD)
.pipe(switchMap(a =>
this.sharedService.add(a.entity, a.api)
.pipe(map(s => new AddResult(Ok(s.id))))
.pipe(catchError(e => of(new AddResult(Err(e)))))));

1 Ответ

0 голосов
/ 13 октября 2018

Вы можете захотеть использовать mergeMap вместо switchMap .Вот список карт с их поведением: enter image description here

@effect()
add$ = this.actions$
.ofType<Add>(ADD)
.pipe(mergeMap(a =>
this.sharedService.add(a.entity, a.api)
.pipe(map(s => new AddResult(Ok(s.id))))
.pipe(catchError(e => of(new AddResult(Err(e)))))));
...