JS の例 1
このコードは、1 つの要求が (404 または 500 応答によって、またはタイムアウトによって) 失敗した場合に他の要求を中止することを想定しており、ビジネス ロジックの失敗シナリオを判断するためにデータ応答を評価する必要はありません。$.when()
このメソッドは、すべての Deferred が解決されるとすぐにそのマスター Deferred を解決するか、Deferred の 1 つが拒否されるとすぐにマスター Deferred を拒否します。
$.when(fireRequest(1), fireRequest(2),fireRequest(3))
.then(myAllSuccessfulFunc, oneFailedFunc);
function myAllSuccesfulFunc(req1,req2,req3){
//everything returned a 200.
alert("these are not the droids you are looking for");
};
function oneFailedFunc(req1,req2,req3){
//* each req looks like [ "not success", statusText, jqXHR ] */
//feel free to check what failed, but I don't know what you need
req1[2].abort();
req2[2].abort();
req3[2].abort();
};
jsの例2
バックエンドからのロジックが原因で他のリクエストを失敗させる必要があるかどうかを確認するために、実際には成功したリクエストのレスポンスを解析する必要があります。
var stop = 4;
//if you are sure fireRequest(x) returns a good promise object, do this:
callNext(fireRequest(1),1);
function callNext(promise, currentIndex){
promise.done(function(ajaxArgs){
var jqXHR = ajaxArgs[2];
//replace this with some logic check that makes sense to your app
if(/error/.test(jqXHR.responseText)){
//do something
}else if(currentIndex <stop){
callNext(fireRequest(currentIndex+1),currentIndex+1);
}).fail(function(ajaxArgs){
//server returned a 404, or a 500, or something not a success.
});
};