Angular 如何在ngrx效果中调用两次服务?
我有一个效果是监听一个动作,这个效果是一次调用api(检索10个随机电影),这是一个正常的行为,但我想调用同一个服务两次Angular 如何在ngrx效果中调用两次服务?,angular,typescript,redux,rxjs,ngrx,Angular,Typescript,Redux,Rxjs,Ngrx,我有一个效果是监听一个动作,这个效果是一次调用api(检索10个随机电影),这是一个正常的行为,但我想调用同一个服务两次 loadMovies$ = createEffect(() => this.actions$.pipe( ofType('[Movies Page] Load 20 Movies'), mergeMap(() => this.moviesService.getTenRandomMovies() .pipe( map(movi
loadMovies$ = createEffect(() => this.actions$.pipe(
ofType('[Movies Page] Load 20 Movies'),
mergeMap(() => this.moviesService.getTenRandomMovies()
.pipe(
map(movies => ({ type: '[Movies API] 10 Movies Loaded Success', payload: movies })),
catchError(() => EMPTY)
))
)
);
我在考虑这个解决方案,但看起来很奇怪。如果这是唯一的可能,请告诉我
dispatchTwiceGetAuthQuestions$ = createEffect(() =>
this.actions$.pipe(
ofType('[Movies Page] Load 20 Movies'),
tap(() => {
this.store.dispatch(new LoadTenRandomMovies());
}),
tap(() => {
this.store.dispatch(new LoadTenRandomMovies());
})
)
);
loadMovies$ = createEffect(() => this.actions$.pipe(
ofType('[Movies Page] Load 10 Movies'),
mergeMap(() => this.moviesService.getTenRandomMovies()
.pipe(
map(movies => ({ type: '[Movies API] 10 Movies Loaded Success', payload: movies })),
catchError(() => EMPTY)
))
)
);
注意:无法更新后端。您可以编写一个新函数
moviesService.getRandomMovies(pagesToGet:int)
let可观测项:任意[]=[];
for(设i=0;iresults.flat())
使用forkJoin应该足够了
loadMovies$ = createEffect(() => this.actions$.pipe(
ofType('[Movies Page] Load 10 Movies'),
switchMap(() =>
forkJoin([
this.moviesService.getTenRandomMovies(),
this.moviesService.getTenRandomMovies()
])
.pipe(
map(([response1,response2]) => {
// do something
}),
map(movies => ({ type: '[Movies API] 10 Movies Loaded Success', payload: movies
})),
catchError(() => EMPTY)
))
)
);
有关于这个问题的最新消息吗?
loadMovies$ = createEffect(() => this.actions$.pipe(
ofType('[Movies Page] Load 10 Movies'),
switchMap(() =>
forkJoin([
this.moviesService.getTenRandomMovies(),
this.moviesService.getTenRandomMovies()
])
.pipe(
map(([response1,response2]) => {
// do something
}),
map(movies => ({ type: '[Movies API] 10 Movies Loaded Success', payload: movies
})),
catchError(() => EMPTY)
))
)
);