美文网首页
jQuery回调方法

jQuery回调方法

作者: Marco_Deng | 来源:发表于2016-10-11 20:29 被阅读25次

    是时候用Deferred了
    jQuery在1.5版本之后,引入了Deferred对象,提供的很方便的广义异步机制。详情可参看阮一峰老师的这篇文章http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html
    于是我用Deferred对象改写了代码,如下:

     function getData3() {
     var defer = $.Deferred(); 
     $.ajax({        
      url: "p.php",      
      //async : false,       
      success: function(data)   {  
      defer.resolve(data)        
      }    
      });
      return defer.promise();
     }
     $(".btn3").click(function() {
     $(".loadingicon").show();    
     $.when(getData3()).done(function(data) {$(".loadingicon").hide();    
     alert(data);
     });
     });
    

    可以看到我在ajax请求中去掉了async:false,也就是说,这个请求又是异步的了。另外请注意success函数中的这一 句:defer.resolve(data),Deferred对象的resolve方法可传入一个参数,任意类型。这个参数可以在done方法中拿到, 所以我们异步请求来的数据就可以以这样的方式来返回了。
    至此,问题得到了解决。Deferred对象如此强大且方便,我们可以好好利用它。

    相关文章

      网友评论

          本文标题:jQuery回调方法

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