阮一峰关于deferred 详解

来源:互联网 发布:java fixflow流程设计 编辑:程序博客网 时间:2024/05/16 18:03

关于jquery中ajax请求的深入了解,deferred可能是jquery中1.5版本以后最重要的方法,你真的理解了吗!

http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html


自己试着封装的ajax

直接上马:

html:

 <button id="btn" onclick="ajaxBtn(this)"></button>
js代码:

/*    * @obj 事件对象    * @url必填    * @data,type,async beforeSend有默认值    * @beforeSend ajax发送之前的状态事件;    * @ajax 形成promise对象     * @then 成功与失败的函数    * */    jQuery.extend({        ajaxCode:function (url,data,type,async) {            var dtd = $.Deferred();           $.ajax({                url:url,                data:data || {},                type: type || 'GET',                cache: 'false',               dataType:dataType || 'json',                async:async || 'true',                success: dtd.resolve,                error: dtd.reject,            });            return dtd.promise();        },        ajaxCode2:function (url,data,type,async) {            var dtd = $.Deferred();           $.ajax({                url:url,                data:data || {},                type: type || 'GET',                cache: 'false',               dataType:dataType || 'json',                async:async || 'true'            }).then(function(data){                 dtd.resolve(data);            }, function(){                 toastr.error("提交失败", "操作失败");                 dtd.reject();            });            return dtd.promise();        },    });    function ajaxBtn (obj) {        var  obj =  arguments[0] ;        $.ajaxCode(obj,url,data,type,async,beforeSend).then(function(data){},function(data){})    };


原创粉丝点击