Javascript 忽略管道内的映射,并且不会触发http调用
我在调用web服务时遇到了一个问题 我在这里创造了效果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, '
$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);
}