Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在ngrx效果中调用两次服务?_Angular_Typescript_Redux_Rxjs_Ngrx - Fatal编程技术网

Angular 如何在ngrx效果中调用两次服务?

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

我有一个效果是监听一个动作,这个效果是一次调用api(检索10个随机电影),这是一个正常的行为,但我想调用同一个服务两次

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)
     ))
   )
 );