我不想在效果中使用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。每当我收到回复时,我...
只需对您的ID数组中的每个对象执行一个操作,并在该循环中调用您的服务,创建并预订新的可观察对象,并在完成操作后调度它们。
代替执行map(movies => ({ type: '[Movies API] Movies Loaded Success', payload: movies })),
,您需要返回要更新商店的操作。
您可以为此使用merge
。