Я работаю с Angular10. Вызов запросов GraphQL. Когда я несколько раз вызываю один и тот же запрос GraphQL с разными данными POST, все вызовы API отменяются, кроме последнего.
Но я хочу, чтобы все API-интерфейсы вызывались.
Наличие этой конфигурации в поставщике app.module.ts
{
provide: APOLLO_OPTIONS,
useFactory: (httpLink: HttpLink) => {
const http = httpLink.create({uri: '/graphql'});
const errors = onError(({graphQLErrors, networkError}) => { return graphQLErrors; });
const link = errors.concat(http);
return {
link,
cache: new InMemoryCache(),
};
},
deps: [HttpLink],
}
приложение.service.ts
public getEmployeesData(
input: {projectId: number}
): Observable<ApolloQueryResult<{employee_query: any}>> {
return this.apollo.watchQuery<{employee_query: any}>({
query:gql` query employee_query(
$projectId: INT!
) {
employee_query(
projectId: $projectId
) {
firstname
lastname
empId
disignation
}
},
variables: input,
}).valueChanges;
}
Мой эффект.ts
@Effect()
public getEmployee(): Observable<IAction<any | HttpErrorResponse>> {
return this._actions$.pipe(
ofType(EmployeeAction.GET_EMPLOYEE_DATA),
switchMap((action: IAction<any>) => {
return this.getEmployeesData(action.payload).pipe(map(
(
response: ApolloQueryResult<{
employee_query?: any;
}>,
) => {
return EmployeeAction.getEmployeeResponse(
response.data.employee_query
);
},
),
);
}),
);
}
Вызов из @Effect. Обновил вопрос, как вы просили. пожалуйста, проверьте
Ваша проблема возникает из-за switchMap. Вместо этого попробуйте использовать mergeMap.





Проблема здесь возникает из-за использования switchMap. Он специально разработан, чтобы вести себя так, как вы описали:
Когда испускается новый внутренний Observable, switchMap прекращает испускать элементы из ранее испущенного внутреннего Observable и начинает испускать элементы из нового. Он продолжает вести себя так для последующих внутренних Observables.
В вашем случае лучше подойдет mergeMap:
Возвращает Observable, который испускает элементы на основе применения функции, которую вы предоставляете для каждого элемента, испускаемого исходным Observable, где эта функция возвращает Observable, а затем объединяет эти полученные Observable и испускает результаты этого слияния.
Как вы вызываете метод
getEmployeesData? Можете ли вы добавить код вызова для него?