针对jquery的when方法做的应变

Posted qingwengang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了针对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方法满足都成功就往下执行的条件。 

 

霹雳猿教程_-HTML教程-HTML 教程

 

霹雳猿教程_-HTML教程-HTML 简介

 

霹雳猿教程_-HTML教程-HTML 基础

 

霹雳猿教程_-HTML教程-HTML 元素

 

霹雳猿教程_-HTML教程-HTML 属性

 

霹雳猿教程_-HTML教程-HTML 标题

 

霹雳猿教程_-HTML教程-HTML 段落

 

霹雳猿教程_-HTML教程-HTML 链接

 

霹雳猿教程_-HTML教程-HTML 头部

 

霹雳猿教程_-HTML教程-HTML CSS

 

霹雳猿教程_-HTML教程-HTML 图像








以上是关于针对jquery的when方法做的应变的主要内容,如果未能解决你的问题,请参考以下文章

jQuery异步框架探究3:jQuery.when方法

$.when()方法翻译

jQuery Deferred:具有多个对象的 $.when()

jQuery源代码学习之五——jQuery.when

带有ajax数组的JQuery $.when [重复]

jQuery.when()的用法