2 つのデータに対して 2 つの AJAX 要求を行いたいと思います。要求の 1 つまたは両方が失敗する可能性があります。その場合でも、両方のリクエスト (または成功したリクエスト) からのデータを操作したいと思います。
私が次のようなことをした場合:
$.when($.get("page1"), $.get("page2")).then(function(a1, a2) {
})
このthen
関数は、両方のリクエストが成功した場合にのみ呼び出されるため、一方が失敗すると、成功したリクエストからデータを取得できません。次に、failCallback を使用するか、always メソッドを使用すると、次のようになります。
$.when($.get("page1"), $.get("page2")).then(function(a1, a2) {
console.log("this is only called if both succeed.");
}, function(a1, a2, a3) {
console.log("this is only called with a then() failure");
}).always(function(a1, a2, a3) {
console.log("this will fire when always() does.");
});
failCallback と always コールバックは、失敗したリクエストに関するデータのみを報告するため、成功したリクエストに関するデータを取得できません。同様に、リクエストの 1 つが失敗した場合、遅延された done() を使用しても呼び出されません。そのため、1 つのリクエストが 404 になると、成功した関数からデータを取得できないという状況があります。
遅延オブジェクトを切り離すことができると思うので、両方が when ループに含まれているわけではありません。ただし、続行する前に両方が終了することを確認するという問題に遭遇します。