之前和后端通过简单的GET请求实现了一个扫描小程序码实现网页登录的功能,该功能的技术原理为利用GET请求60秒过期时间的原理,在用户获得从后端获取小程序的时候,发起一个GET请求,监听该小程序码落地页的返回。
在功能实现之后,后端向我提了一个问题,可不可以在用户切回密码登录或者刷新二维码的时候,中止前一个没有完成的GET请求,以节省后端资源,并且也能消除前端一个不必要的超时报错。
在查阅了google之后,发现浏览器提供了一个AbortController对象,并给其赋予了其中止fetch请求的abort方法,使用方法如下:
var controller = new AbortController() //生成controll对象
var signal = controller.signal
fetch(url, {signal}).then(function(response) {
...
}) //发起请求,并将signal存入options对象中
controller.abort() //调用controller中的abort方法中止请求
需要注意的是,该方法目前是实验性方法,各个浏览器的支持版本偏高,因此可能需要做兼容性处理。
参考资料:https://developer.mozilla.org/zh-CN/docs/Web/API/FetchController
网友评论