標籤:
需求:a,b兩個任務都處理(不管a,b是成功還是失敗)後,執行後面的任務。
代碼1:
Java代碼
-
- var leftResult = leftPromise.then(
- function (value) {
- console.info("jsonA end");
- }, function () {
- console.info("jsonA fail");
- }
- );
-
- var rightResult = rightPromise.then(
- function (value) {
- console.info("jsonB end");
- }, function () {
- $("#jsonB").val("");
- console.info("jsonB fail");
- }
- );
-
- $.when(leftResult, rightResult).always(
- function(){
- console.info("start compare");
- });
-
可能出現a任務失敗後,直接執行後面的任務了
when方法的定義就是任意失敗,或者全部成功就往下執行。怎麼辦呢?
通過一個always的封裝解決:
Java代碼
-
- var leftResult = leftPromise.then(
- function (value) {
- console.info("jsonA end");
- }, function () {
- console.info("jsonA fail");
- }
- ).always(
- function () {
- console.info("jsonA always");
- var d = $.Deferred();
- d.resolve();
- return d.promise();
- }
- );
- var rightResult = rightPromise.then(
- function (value) {
- console.info("jsonB end");
- }, function () {
- $("#jsonB").val("");
- console.info("jsonB fail");
- }
- ).always(
- function () {
- console.info("jsonB always");
- var d = $.Deferred();
- d.resolve();
- return d.promise();
- }
- );
- $.when(leftResult, rightResult).always(
- function(){
- console.info("start compare");
- });
-
這裡的重點是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方法做的應變