• jquery deferred对象


    本篇博文是对阮一峰的一篇日志的归纳

    1
    var func1 = function() { 2 $.ajax("/echo/json")//jquery1.5以后返回deferred对象, 1.5以前返回XHR对象, 无法使用链式操作 3 .done(function(){//相当于success方法 4 alert("success!"); 5 }) 6 .fail(function(){//相当于error方法 7 alert("fail!"); 8 }) 9 .done(function(){//可以指定多个回调函数 10 alert("done again"); 11 }) 12 .fail(function(){ 13 alert("fail again"); 14 }) 15 .always(function(){//相当于complete方法 16 alert("always!"); 17 }); 18 } 19 20 var func2 = function() { 21 var def = $.Deferred(); 22 var wait = function(){ 23 var task = function() { 24 alert("task done"); 25 def.resolve(); 26 } 27 setTimeout(task, 3000); 28 /*返回promise对象,这样就无法再wait方法外修改deferred对象的状态*/ 29 return def.promise(); 30 } 31 32 var d = wait(); 33 $.when(d) 34 .done(function(){ 35 alert("done"); 36 }); 37 //d.reject();//语句无效,因为promise对象无修改deferred对象状态的方法 38 } 39 40 var func3 = function(){ 41 var wait = function() { 42 //将deferred对象设置为wait方法的内部对象更保险 43 var def = $.Deferred();//deferred对象状态:未完成 44 var task = function(){ 45 alert("task done"); 46 def.resolve();//状态:已完成, 会触发done方法 47 //def.reject();//状态:已失败, 会触发fail方法 48 } 49 setTimeout(task, 3000); 50 return def; 51 } 52 53 $.when(wait())//when方法要求接受一个deferred对象 54 .done(function(){ 55 alert("done"); 56 }); 57 } 58 59 var func4 = function(){ 60 //将done和fail方法合并 61 $.when($.ajax("/echo/json")) 62 .then(function(){ 63 alert("done"); 64 }, function(){ 65 alert("fail"); 66 }); 67 } 68 69 var func5 = function(){ 70 var d = $.Deferred(); 71 var task = function(){ 72 alert("do something"); 73 } 74 d.progress(task);//注册事件 75 d.notify();//触发progress注册的事件 76 }
  • 相关阅读:
    河南省第十二届大学生程序设计竞赛 F: Information Transmission-1(二分图最大匹配)
    hdu1068:Girls and Boys(最大独立集)
    hdu1068:Girls and Boys(最大独立集)
    hdu1281:棋盘游戏(二分图最大匹配)
    hdu1281:棋盘游戏(二分图最大匹配)
    洛谷P1991 :无线通讯网(最小生成树)
    洛谷P1991 :无线通讯网(最小生成树)
    oGitHub 注册
    Lambda应用设计模式 [转载]
    读取excel数据 到 datagrid 出现 找不到可安装的ISAM
  • 原文地址:https://www.cnblogs.com/ykt8465279130/p/2944056.html
Copyright © 2020-2023  润新知