Прерванный запрос с использованием AbortController в приложении React Redux отменяется навсегда - PullRequest
0 голосов
/ 26 марта 2019

У меня есть служба извлечения, которая отправляет запросы в 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)

Любые советы, что может быть не так?Я просто хочу сделать запрос еще раз после того, как он был прерван.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...