Как отменить вызов axios через определенное время

Я использую React, Redux, Axios и Thunk. В сокращенном действии приложение выполняет вызов GET для получения данных, но мне нужно отменить его или попросить пользователей посмотреть, хотят ли они отменить его, скажем, через 10 секунд. Я читал об отмене Axios, но не знаю, как это использовать со временем.

@CupofJava, не могли бы вы показать мне некоторые кодировки и опубликовать их в качестве ответа? Спасибо большое

farm command 19.11.2018 23:11
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
1
1 008
2

Ответы 2

С помощью документации от Axios мы можем включить setTimeout, который проверяет статус обещания того, что мы хотим отменить.

Обновлено: Похоже, нет стандарта для проверки того, было ли выполнено обещание или нет, поэтому вы можете сделать что-то вроде этого:

Где мы можем проверить, определено ли обещание или нет

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user/12345', {
  cancelToken: source.token
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.info('Request canceled', thrown.message);
  } else {
    // handle error
  }
});

const callPromise = axios.post('/user/12345', {
  name: 'new name'
}, {
  cancelToken: source.token
})

// cancel the request by checking the promise
setTimeout(() => {
    if (!callPromise){
        source.cancel('Operation canceled by the user.');
    }
}, 10000)

Мы также можем установить внешнюю переменную, которая будет установлена ​​при выполнении обещания.

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

let isResolved = false;

axios.post('/user/12345', {
    name: 'new name'
}, {
    cancelToken: source.token
}).then(res => {
    isResolved = true;
})

// cancel the request by checking the promise
setTimeout(() => {
    if (!isResolved){
        source.cancel('Operation canceled by the user.');
    }
}, 10000)
//this statement your axious get

    state = {data: [] };
            componentWillMount(){
                axios.get('https://yourwebsite.com')
                .then(Response => this.setState({ data: Response.data}));
            }

//this statement for your setTimeout() function

    setTimeout(() => {
        if (callPromise.isResolved()){
            data.cancel('Canceled');
        }
    }, 15000)

Тогда вам понадобится функция data.setTimeout ().

Может, это вам поможет!

что .setTimeout() я знаю, что я не знаю, где и как его использовать. не могли бы вы добавить больше информации в свой ответ, спасибо

farm command 19.11.2018 23:21

Другие вопросы по теме