Через документацию от 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.log('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)