美文网首页JS学习笔记
如何在前端主动中止一个请求?

如何在前端主动中止一个请求?

作者: _敏讷 | 来源:发表于2019-07-02 21:28 被阅读0次

    之前和后端通过简单的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

    相关文章

      网友评论

        本文标题:如何在前端主动中止一个请求?

        本文链接:https://www.haomeiwen.com/subject/ovqyiqtx.html