H5W3
当前位置:H5W3 > HTML5 > 正文

【前端】如何可以关闭一个ajax请求

如题:目前项目使用vue在做。自己有做了一个文件上传的插件。其他都没有问题,就是在取消文件上传的时候问题

//文件上传到自己的服务器
//假设目前我拖拽了一个文件上传,请求后端的接口并发送数据 假设现在开启了接口A
//但是文件上传到100%的时候后端才会给相应。但是在拖拽区域的右上角有一个关闭的按钮,可以取消这个上传
// 现在我的做法是直接将这块dom元素初始化了,但是A接口还在继续发送数据,直到它上传完了它自己停止了。
//我现在想在点击关闭按钮的时候直接停掉这个A接口,不再发送数据了要怎么做

求大神指点,好像ajax并没有类似于停止某个接口的方法把。http请求使用的是axios
ps:因为插件是可以开启多个上传的,如果要停掉的话,只能停掉某一个对应的接口不能全部停掉。求大神指点

回答

https://github.com/mzabriskie…

axios 的文档中说的很清楚。

var CancelToken = axios.CancelToken;
var 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
  }
});

// cancel the request (the message parameter is optional)
source.cancel('Operation canceled by the user.');

如果是AJAX,Jquery是有中途取消的abort函数的,所以,其它的库,理论上也可以支持。
如果是隐藏表单提交,貌似就没法中途取消了(关闭浏览器???)。

另外,真正需要注意处理中断的不是前端,而是后台。
传到一半中断,前端取消了却传上去了,等等,最终怎么处理,是个问题。。。

本文地址:H5W3 » 【前端】如何可以关闭一个ajax请求

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址