У меня есть служба извлечения, которая отправляет запросы в API (используя Redux-thunk).Иногда я хочу отменить эти запросы (обычно пользователь нажимает кнопку «Отмена»).
Я использую AbortController в этом сервисе и вызываю метод abort этого контроллера в методах компонента.В первый раз запрос прерывается корректно, но когда я хочу сделать этот запрос снова, он также автоматически прерывается (даже если на вкладке «Сеть» в Chrome нет запроса, он сразу отклоняется).
// fetching service
const abortController = new AbortController();
const acSignal = abortController.signal;
export { abortController };
export default class FetchService {
public static post(url: string): Promise<Response> {
const requestOptions = {
method: 'POST',
body: ...
signal: acSignal
};
return new Promise((resolve, reject) => {
fetch(url, requestOptions)
.then(resolve, reject);
});
}
}
// Component
import React from 'react';
import { abortController } from '../FetchService';
class Comp extends React.Component<{}, {}> {
...
onCancelRequest = () => {
// on cancel button click, abort request
abortController.abort();
}
onButtonClick = () => {
// initiate request
}
}
onButtonClick -> запрашивание -> onCancelRequest -> запрос отменен -> снова onButtonClick -> запрос отменяется автоматически (никаких других onCancelRequest)
Любые советы, что может быть не так?Я просто хочу сделать запрос еще раз после того, как он был прерван.