美文网首页
取消Javascript异步请求

取消Javascript异步请求

作者: 猫久伴你入眠 | 来源:发表于2018-01-23 15:51 被阅读0次

普通的ajax很少会涉及到需要取消请求的操作,但是在定时(setInterval)发送异步请求的时候,或者频繁切换数据时候,取消ajax就变得额外重要,这时候就需要取消之前未完成的请求.

1.jquery取消异步请求

   var xhr;
   var ajax = function () {
       if (xhr && xhr.readyState != 4) {
           xhr.abort();
       }
       xhr = $.ajax({
           url: 'http://localhost:3123/jwApi/Report/jwQgReportController.do/_newXqmxData',
           success: function (data) {
               //do something
           }
       });
   };
   //轮询请求,,如果上一次请求未完成,则取消上次请求
   setInterval(ajax, 2000);

2.axios取消异步请求

同时发送两次请求,取消其中一个
如果同时取消,可以使用同一个source.token

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
    
    <button id="a">停止</button>
    <script type="text/javascript">
        var CancelToken = axios.CancelToken;
        var source = CancelToken.source();
        
        axios.get("http://localhost:3123/jwApi/Report/jwQgReportController.do/_newXqmxData", {
          cancelToken: source.token
        }).catch(function(thrown) {
          if (axios.isCancel(thrown)) {
            //取消操作
            console.log('Request canceled', thrown.message);
          } else {
            //处理异常
          }
        });
        
        
        var source2 = CancelToken.source();
        axios.get("http://localhost:3123/jwApi/Report/jwQgReportController.do/_newXqmxData", {
          cancelToken: source2.token
        }).catch(function(thrown) {
          if (axios.isCancel(thrown)) {
            //取消操作
            console.log('Request canceled', thrown.message);
          } else {
            //处理异常
          }
        });
        
        $('#a').click(function(){
            
                source.cancel('Operation canceled by the user.');
        })
    </script>
</body>
</html>

相关文章

  • 取消Javascript异步请求

    普通的ajax很少会涉及到需要取消请求的操作,但是在定时(setInterval)发送异步请求的时候,或者频繁切换...

  • [JavaScript] (Day-20) - AJAX 简介

    AJAX 不是 JavaScript 的规范,而是用 JavaScript 执行异步网络请求,缩写为:Asynch...

  • AJAX

    同步和异步 异步的javascript和xml就是AJAX,不用全部重新加载,可以实现异步请求,局部刷新的功能。 ...

  • Java中级(七)

    一、传统的web请求 二、异步的web请求1.什么是ajaxAsynchronous Javascript And...

  • OkHttp3(八)--RealCall

    RealCall 它将会对请求做最后操作,例如异步请求、同步请求、取消请求等操作。 它实现了Call接口,其中Ca...

  • Ajax异步请求[17.7.10]

    Ajax异步请求 Ajax全称为Asynchronous Javascript and XML。通过Ajax实现了...

  • 2018-11-27

    AJAX AJAX是什么??? Asynchronous JavaScript & XML(js请求XML异步的技...

  • [JavaScript] (Day-28) - jQuery

    用JavaScript写 AJAX 前面已经介绍过了,主要是用JavaScript执行异步网络请求用jQuery的...

  • js如何取消异步请求

    本文总结了原生XHR、jquery、axios取消异步请求的方法。 XHR 对于原生XHR对象来说,取消的ajax...

  • Ajax get请求GitHub API接口

    AJAX用于异步请求。AJAX = 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页...

网友评论

      本文标题:取消Javascript异步请求

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