NGRX:如何多次调用相同的服务,并且内部效果不同,因此有效载荷>>

问题描述 投票:1回答:3

我不想在效果中使用forkJoin

实际上,我得到一个ID数组,在这些ID的帮助下,我想多次致电服务。并且每当我收到响应时,我都想调度一个操作来更新我的商店

@Injectable()
export class MovieEffects {
  loadMovies$ = createEffect(() =>
    this.actions$.pipe(
      ofType('[Movies Page] Load Movies'),

     //here i am getting one array object via action,  e.g. = [{id: 1},{id: 2},{id: 3},{id: 4} ]
     //and here i want to call same service 4 time as per array length
     // every time when get response i want to dispatch one action with response payload

      mergeMap((action) => this.moviesService.getAll()
        .pipe(
          map(movies => ({ type: '[Movies API] Movies Loaded Success', payload: movies })),
          catchError(() => of({ type: '[Movies API] Movies Loaded Error' }))
        )
      )
    )
  );

  constructor(
    private actions$: Actions,
    private moviesService: MoviesService
  ) {}
}

我不想在效果内部使用forkJoin效果是,我得到一个ID数组,在这些ID的帮助下,我想多次调用service。每当我收到回复时,我...

angular typescript ngrx rxjs6
3个回答
1
投票

只需对您的ID数组中的每个对象执行一个操作,并在该循环中调用您的服务,创建并预订新的可观察对象,并在完成操作后调度它们。


0
投票

代替执行map(movies => ({ type: '[Movies API] Movies Loaded Success', payload: movies })),,您需要返回要更新商店的操作。


0
投票

您可以为此使用merge

© www.soinside.com 2019 - 2024. All rights reserved.