这是我的axios依赖:
"axios": "^1.4.0",
这是我的代码
const source = axios.CancelToken.source();data = { ...data, ...JSON.parse(localStorage.getItem('_TT_token')), cancelToken: source.token}const xhr = axios.post(url,data)// 如果xhrMap中存在该url请求,则执行取消操作if (xhrMap[url]) { source.cancel('Operation canceled by the user.')}xhrMap[url] = xhrxhr.then( (response) => { resolve(response.data); }, (err) => { if (axios.isCancel(err)) { console.log('Request canceled:', err.message); } else { reject(err); } });
这段代码有什么问题么?请求并不会取消
你应该先判断 xhrMap
里是否有缓存数据,然后再调用 axios.post
发起请求;而不是发起请求之后再取消。
data = { ...data, ...JSON.parse(localStorage.getItem('_TT_token')), cancelToken: source.token}axios.post(url,data)
应为
axios.post(url, data, { cancelToken: source.token})
看起来,你在使用 axios
的 CancelToken
来取消请求。但是在你的代码中,CancelToken
被正确地创建了,但是并没有正确地传递给请求。你创建了 source.token
并添加到了数据对象中,但是并没有将它传递给 axios.post
请求。
你应该将 cancelToken
作为第三个参数传递给 axios.post
,就像这样:
const source = axios.CancelToken.source();data = { ...data, ...JSON.parse(localStorage.getItem('_TT_token')), cancelToken: source.token}const xhr = axios.post(url, data, {cancelToken: source.token});// 如果xhrMap中存在该url请求,则执行取消操作if (xhrMap[url]) { source.cancel('Operation canceled by the user.');}xhrMap[url] = xhrxhr.then( (response) => { resolve(response.data); }, (err) => { if (axios.isCancel(err)) { console.log('Request canceled:', err.message); } else { reject(err); } });
在这段代码中,我们传递了一个配置对象作为第三个参数给 axios.post
。这个配置对象包含一个 cancelToken
属性,其值就是我们之前从 CancelToken.source().token
获取的 token。这样,我们就可以使用这个 token 来取消请求了。
问题内容: 在我的应用中,我正在创建从HTTP到HTTPS的AJAX请求。这意味着我需要CORS。因此,我向jQuery.ajax添加了一些标题和参数并对其进行了测试。在Firefox中,一切正常,但在Chrome中,一切正常。Chrome会“杀死”每一个预先提出的请求(选项)。 jQuery脚本: HTTP转储: 有人知道为什么Chrome会终止此请求吗? 问题答案: 也许您的https服务器具
我试图用PUT请求调用REST API,但收到400个错误代码(错误请求)。有人能看出我做错了什么吗? 我已经用REST客户端成功调用了这个API,下面是使用的头和主体: https://imgur.com/dZVyawnhttps://imgur.com/lMtn2JB 错误400收到错误请求响应
有没有大佬提供下这种echart 图表的示例参考一下
问题内容: 我的网站提出了很多要求。我经常需要取消所有当前请求,以使浏览器不会阻止相关的新请求。 我有3种要求: 阿贾克斯 插入的脚本标签(执行JSONP通讯) 插入的图像标签(导致浏览器向各种服务器请求数据) 对于Ajax,它没有问题,因为XMLHttpRequest对象支持取消。我需要的是一种使所有浏览器停止从DOM对象加载资源的方法。 看起来简单地从DOM中删除对象(例如,图像标签)只会帮助
在鸿蒙OS的arkts的axios中, 怎么取消某个http请求? 本文参与了 思否 HarmonyOS 技术问答马拉松,欢迎正在阅读的你也加入。