[英]How do I cancel a ongoing GET request with axios
我有一个输入字段,onChange 它将我输入字段的值发送到 API。 因此,api 将开始获取所有数据。 但是当我再次继续输入时,我希望取消之前的请求。
我正在使用 axios 提出我的请求并尝试查看文档,但我似乎无法弄清楚它是如何工作的,有人可以解释一下如何做到这一点吗?
这是我的 function ,每个新输入都会调用它:
const onChange = (value) => {
setTimeout(async() => {
let result = []
if (y === "keyword") result = await AutoSuggestionKeyword({
value: value
});
else {
const CancelToken = axios.CancelToken;
const source = CancelToken.source();
await axios.get(`https://${api_uri}/${value.toLowerCase()}`)
.catch(function(thrown) {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
// handle error
}
}).then(resp => {
console.log(resp)
});
source.cancel();
}
}, 500)
}
您需要在请求中提供cancelToken
,
axios.get(`https://${api_uri}/${value.toLowerCase()}`, {
cancelToken: source.token
}).catch(function(thrown) {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
// handle error
}
});
I don't think you can cancel an HTTP request
, but what you can do is wrap it in debounce function, debounce function wait for a certain time before calling the callback or function you wrap or pass on it.
您可以简单地 google debounce,它会为您提供可以使用的文章或 npm 包。
我认为这篇文章也有您要解决的相同问题
快乐编码
编辑 1:是的,所以您可以取消 http 请求,请参阅下面的评论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.