Javascript 忽略管道内的映射,并且不会触发http调用

Javascript 忽略管道内的映射,并且不会触发http调用,javascript,angular,rxjs,ngrx,angular-services,Javascript,Angular,Rxjs,Ngrx,Angular Services,我在调用web服务时遇到了一个问题 我在这里创造了效果 $LoadSchedulingsByMission = createEffect(() => this.actions$.pipe( ofType<any>(ESchedulesActions.GetSchedulesByDirection), mergeMap(action => this.apiCallsService.getDirections(action.payload, '

我在调用web服务时遇到了一个问题

我在这里创造了效果

$LoadSchedulingsByMission = createEffect(() =>
  this.actions$.pipe(
    ofType<any>(ESchedulesActions.GetSchedulesByDirection),
    mergeMap(action =>
      this.apiCallsService.getDirections(action.payload, '2016-04-18').pipe(
        map(trips => ({ type: ESchedulesActions.GetSchedulesByDirectionSuccess, payload: trips })),
        catchError(() => EMPTY)
      )
    )
  )
);
然后我调用一个http服务,它接受上面的字符串数组

getDirections(dataArrayToLoop: string[], date:string) {
  const groupByDirection:any={};
  dataArrayToLoop.map(elm=> {
    let dirUrl=`.....date=${date}&directions=${elm}`
    this.http.get<ISchedules>(dirUrl).pipe(map(dirData=>{
      groupByDirection[elm].push(dirData.data)
    }))
  })
  return of(groupByDirection);
}
减速器

case ESchedulesActions.GetSchedulesByDirection: {
  return {
    ...state,
  };
}
case ESchedulesActions.GetSchedulesByDirectionSuccess: {
  return {
    ...state,
    directions: action.payload
  };
}
问题是http调用没有被触发,在回调发生之前,我验证了dataarray不是空的

您返回的
of(groupByDirection)
。你需要这样的东西:

getDirections(dataArrayToLoop: string[], date:string) {
  const groupByDirection = dataArrayToLoop.map(elm => {
    let dirUrl=`.....date=${date}&directions=${elm}`;

    return this.http.get<ISchedules>(dirUrl).pipe(
      map(dirData=> dirData.data),
    );
  })
  return combineLatest(groupByDirection);
}
getDirections(dataArrayToLoop:string[],日期:string){
constGroupByDirection=dataArrayToLoop.map(elm=>{
设dirUrl=`..date=${date}&directions=${elm}`;
返回这个.http.get(dirUrl.pipe)(
映射(dirData=>dirData.data),
);
})
返回组合相关测试(groupByDirection);
}
case ESchedulesActions.GetSchedulesByDirection: {
  return {
    ...state,
  };
}
case ESchedulesActions.GetSchedulesByDirectionSuccess: {
  return {
    ...state,
    directions: action.payload
  };
}
getDirections(dataArrayToLoop: string[], date:string) {
  const groupByDirection = dataArrayToLoop.map(elm => {
    let dirUrl=`.....date=${date}&directions=${elm}`;

    return this.http.get<ISchedules>(dirUrl).pipe(
      map(dirData=> dirData.data),
    );
  })
  return combineLatest(groupByDirection);
}