Javascript 多个jQueryAjax请求-处理它的方法

Javascript 多个jQueryAjax请求-处理它的方法,javascript,jquery,ajax,Javascript,Jquery,Ajax,如果有jqueryajax加载,我通过快速单击按钮触发另一个ajax,它会有点卡住。如何处理一起触发的多个请求 我该怎么做 放弃/中止所有以前的请求,只处理最新的请求 在前一个请求完成之前不允许新请求(变体:可以是相同的ajax请求,也可以是页面中的任何新ajax请求) AJAX是异步的。所以你可以同时解雇他们 或者在成功回调(或.done()回调)中,可以一个接一个地调用请求。因此,管理您的问题将很容易(您单击按钮但被卡住),因为您可以控制 $.ajax({ url: "http://..

如果有jqueryajax加载,我通过快速单击按钮触发另一个ajax,它会有点卡住。如何处理一起触发的多个请求

我该怎么做

  • 放弃/中止所有以前的请求,只处理最新的请求
  • 在前一个请求完成之前不允许新请求(变体:可以是相同的ajax请求,也可以是页面中的任何新ajax请求)

  • AJAX是异步的。所以你可以同时解雇他们

    或者在成功回调(或.done()回调)中,可以一个接一个地调用请求。因此,管理您的问题将很容易(您单击按钮但被卡住),因为您可以控制

    $.ajax({
      url: "http://..."
    })
      .done(function( data ) {
        // Other AJAX call 
        // or restore disabled elements
        // while you were receiving the response.
      });
    
    如果您想解决问题,请告诉我。

    您可以使用ajax“beforeSend”锁定当前请求。这样,只有在前一个请求完成后,用户才能发送新请求。对于流程序列,您可以使用全局值来存储数据,并始终为其分配新的响应值

       function request(callback){
           if(!$btn.hasClass('disabled')){
               $.ajax({
                   type:'...',
                   url:'...',
                   beforeSend:function(){
                      $btn.addClass('disabled');//so that user cannot send a new request
                   },
                   success:function(data){
                       window.g_data = data;
                       callback && callback()//success callback
                       $btn.removeClass('disabled');
                   }
               })
           }
    
    
      }
      function callback(){
    
        //process window.g_data
      }
    

    请查看此库:

    Async是一个实用程序模块,它为使用异步JavaScript提供了直接、强大的功能


    disable
    ajax
    之前单击,在
    success
    do it
    enabled
    中,我不是在寻找变通方法,我想知道什么是正确的方法。这是正确的方法。你有没有研究过承诺?禁用按钮单击本身,对我来说,这更像是变通方法,(如果ajax响应从未返回,按钮将被禁用,直到页面刷新,这将破坏ajax的全部功能),我想1.放弃/中止所有以前的请求,2.在以前的请求完成之前不允许新请求(更像是检查是否有ajax请求在进行中,不要触发另一个请求)。