jQuery的deferred对象详解--源码

来源:互联网 发布:淘宝的淘口令怎么打开 编辑:程序博客网 时间:2024/05/29 07:44
<html>    <head>        <title>AngularJS2</title>        <style type="text/css">            body{ background-color: #88A5D1;}        </style>        <script src="../../static/js/jquery-1.7.1.js" type="text/javascript"></script>        <script type="text/javascript">        var log = function(n){ console.info(n); };        var info_o_success = function(n){ console.info("old:->success-"+n); };            var info_o_error = function(n){ console.error("old:->error-"+n); };            var info_n_success = function(n){ console.info("new:->success-"+n); };            var info_n_function = function(n){ console.info("new:->more function callback-"+n); };            var info_n_error = function(n){ console.error("new:->error-"+n); };            $(function(){ init_old(); init_new(); });            var init_old = function() {                $.ajax({                    url : "test.html",                    success : function() {                        info_o_success(1);                    },                    error : function() {                        info_o_error(1);                    }                });            }            var init_new = function() {                //# functon 1                $.ajax("test.html")                    .done(function() {                        info_n_success(1);                    })                    .fail(function() {                        info_n_error(1);                    });                //# functon 2                $.ajax("test.html")                    .done(function() {                        info_n_success(21);                    })                    .fail(function() {                        info_n_error(2);                    })                    .done(function() {                        info_n_function(22);                    });                //# functon 3                $.when($.ajax("test1.html"), $.ajax("test2.html"))                    .done(function() {                        info_n_success(3);                    })                    .fail(function() {                        info_n_error(3);                    });                //# function 4                $.when(wait4())                    .done(function() {                        info_n_success(4+"-right now");                    })                    .fail(function() {                        info_n_error(4);                    });                //# function 5                 $.when(wait5(dtd5))                    .done(function() {                        info_n_success(5+'-wait for methord complate');                    })                    .fail(function() {                        info_n_error(5);                    });                //# function 52                $.when(wait52(dtd52))                    .done(function() {                        info_n_success(52+'-wait for methord complate');                    })                    .fail(function() {                        info_n_error(52+'-in here!');                    });                //# function 6                $.when(wait6(dtd6))                    .done(function() {                        info_n_success(6 + '-when use ‘dtd.resolve()’ bllow,right now complate');                    })                    .fail(function() {                        info_n_error(6);                    });                dtd6.resolve(); //# function 6                //# function 7                var d7 = wait7(dtd7); // 新建一个d对象,改为对这个对象进行操作                $.when(d7)                    .done(function() {                        info_n_success(7+'-wait for methord complate');                    })                    .fail(function() {                        info_n_error(7);                    });                //d7.resolve(); // 此时,这个语句是无效的                //# function 8                $.when(wait8())                    .done(function() {                        info_n_success(8 + '-wait for methord complate');                    })                    .fail(function() {                        info_n_error(8);                    });                //# function 9                 $.Deferred(wait9)                    .done(function() {                        info_n_success(9+'-wait for methord complate');                    })                    .fail(function() {                        info_n_error(9);                    });                //# function 10                var dtd10 = $.Deferred(); // 生成Deferred对象                var wait10 = function(dtd10) {                    var tasks = function() {                        log("new-10-methord completed!");                        dtd10.resolve(); // 改变Deferred对象的执行状态                    };                    setTimeout(tasks, 4000);                };                dtd10.promise(wait10);                wait10.done(function() {                    info_n_success(10 + '-wait for methord complate');                }).fail(function() {                    info_n_error(10);                });                wait10(dtd10); //# function 10                //# function 11                $.when($.ajax("test11.html"))                    .then(function() {                        log("new-11-success");                    }, function() {                        log('new-11-error');                    });                //# function 12                $.ajax("test12.html")                    .always(function() {                        log("new-12-methord completed!");                    });            }            // init end            var wait4 = function() {                var tasks = function() {                    log("new-4-methord completed!");                };                setTimeout(tasks, 3000);            };            var dtd5 = $.Deferred(); // 新建一个Deferred对象            var wait5 = function(dtd5) {                var tasks = function() {                    log("new-5-methord completed!");                    dtd5.resolve();//改变Deferred对象的执行状态                };                setTimeout(tasks, 3000);                return dtd5;            };            var dtd52 = $.Deferred(); // 新建一个Deferred对象            var wait52 = function(dtd52) {                var tasks = function() {                    log("new-52-methord completed!");                    dtd52.reject();//改变Deferred对象的执行状态                };                setTimeout(tasks, 3000);                return dtd52;            };            var dtd6 = $.Deferred(); // 新建一个Deferred对象            var wait6 = function(dtd6) {                var tasks = function() {                    log("new-6-methord completed!");                    dtd6.resolve();//改变Deferred对象的执行状态                };                setTimeout(tasks, 3000);                return dtd6;            };            var dtd7 = $.Deferred();//新建一个Deferred对象            var wait7 = function(dtd){                var tasks = function(){                    log("new-7-methord completed!");                    dtd.resolve();//改变Deferred对象的执行状态                };                setTimeout(tasks,3000);                return dtd.promise();//返回promise对象            };            //# function 8            var wait8 = function(){                var dtd = $.Deferred();//在函数内部,新建一个Deferred对象                var tasks = function(){                    log("new-8-methord completed!");                    dtd.resolve();//改变Deferred对象的执行状态                }                setTimeout(tasks,3000);                return dtd.promise(); // 返回promise对象            };            //# function 9            var wait9 = function(){                var dtd = $.Deferred();//在函数内部,新建一个Deferred对象                var tasks = function(){                    log("new-9-methord completed!");                    dtd.resolve();//改变Deferred对象的执行状态                }                setTimeout(tasks,3000);                return dtd.promise(); // 返回promise对象            };        </script>    </head>    <body>        <h1>Hello AngularJS 2</h1>    </body></html>
原创粉丝点击