针对jquery的when方法做的应变

需求:a,b两个任务都处理(不管a,b是成功还是失败)后,执行后面的任务。 
代码1: 

Java代码  收藏代码
  1.     
  2. var leftResult = leftPromise.then(  
  3.     function (value) {      
  4.         console.info("jsonA end");  
  5.     }, function () {  
  6.         console.info("jsonA fail");  
  7.     }  
  8. );  
  9.    
  10. var rightResult = rightPromise.then(  
  11.     function (value) {  
  12.         console.info("jsonB end");  
  13.     }, function () {  
  14.         $("#jsonB").val("");  
  15.         console.info("jsonB fail");  
  16.     }  
  17. );  
  18.    
  19. $.when(leftResult, rightResult).always(  
  20.     function(){  
  21.         console.info("start compare");  
  22.     });  
  23.    


  可能出现a任务失败后,直接执行后面的任务了 
when方法的定义就是任意失败,或者全部成功就往下执行。怎么办呢? 
通过一个always的包装解决: 

Java代码  收藏代码
  1.     
  2. var leftResult = leftPromise.then(  
  3.     function (value) {      
  4.         console.info("jsonA end");  
  5.     }, function () {  
  6.         console.info("jsonA fail");  
  7.     }  
  8. ).always(  
  9.     function () {  
  10.         console.info("jsonA always");  
  11.         var d = $.Deferred();  
  12.         d.resolve();  
  13.         return d.promise();  
  14.     }  
  15. );  
  16. var rightResult = rightPromise.then(  
  17.     function (value) {  
  18.         console.info("jsonB end");  
  19.     }, function () {  
  20.         $("#jsonB").val("");  
  21.         console.info("jsonB fail");  
  22.     }  
  23. ).always(  
  24.     function () {  
  25.         console.info("jsonB always");  
  26.         var d = $.Deferred();  
  27.         d.resolve();  
  28.         return d.promise();  
  29.     }  
  30. );  
  31. $.when(leftResult, rightResult).always(  
  32.     function(){  
  33.         console.info("start compare");  
  34.     });  
  35.    


这里的重点是then后面有个always,always方法返回的一定是成功的,让when方法满足都成功就往下执行的条件。 

 

猿教程_-CSharp教程-C#简介

猿教程_-CSharp教程-C#环境

猿教程_-Java教程-Java简介

猿教程_-Servlet教程-Servlet简介

猿教程_-Jsp教程-JSP简介

猿教程_-Struts教程-Struts2教程

猿教程_-Hibernate教程-Hibernate教程

猿教程_-Entity教程-EntityFramework教程介绍

猿教程_-Entity教程-EntityFramework介绍

猿教程_-Entity教程-EntityFramework体系结构

猿教程_-Entity教程-设置EntityFramework开发环境

猿教程_-Entity教程-创建实体数据模型

猿教程_-Entity教程-模型浏览器

猿教程_-Entity教程-DBContext

猿教程_-Entity教程-实体类型

猿教程_-Entity教程-实体关系

猿教程_-Spring教程-Spring教程

猿教程_-mvc教程-MVC教程

猿教程_-webapi教程-WebAPI教程

posted @ 2016-10-18 20:15  qingwengang  阅读(378)  评论(0编辑  收藏  举报