2017-02-08 3 views
1

У меня есть два АЯКС вызовов, которые выполняют некоторую функцию обратного вызова после того, как они получают законченные с помощью jQuery.when()jQuery.when: Получить код статуса XHR

$.when(loadDataA(), loadDataB()).done(function(dataA, dataB) { 
    console.log(xhr.status); // How do I get the xhr.status? 
} 

Я хочу знать xhr.status первого вызов. С нормальным .done() вы можете сделать что-то вроде:

.done(function(data, statusText, xhr) { 
    console.log(xhr.status); 
} 

Но я не могу заставить его работать в моем случае.

Как это получить при использовании jQuery.when?

+0

, если у вас есть несколько запроса XHR вам нужно будет иметь несколько статистики – madalinivascu

+0

я так и думал. У вас есть пример того, как это сделать? – dmferrari

+0

, если для этого нет встроенных функций (не найдено ни одного), я попытался бы заставить loadDataA и B вернуть объект, содержащий статус xhr с данными. Затем вы можете отступить от dataA и dataB .. просто идея – Kaddath

ответ

1

Из документации $.when():

В случае отложенное был решен без значения, то соответствующий doneCallback аргумент будет не определен. Если Deferred разрешено к одному значению, соответствующий аргумент будет удерживать это значение. В случае, когда Deferred разрешено для нескольких значений, , соответствующий аргумент будет массивом из этих значений. Например:

var d1 = $.Deferred(); 
var d2 = $.Deferred(); 
var d3 = $.Deferred(); 

$.when(d1, d2, d3).done(function (v1, v2, v3) { 
    console.log(v1); // v1 is undefined 
    console.log(v2); // v2 is "abc" 
    console.log(v3); // v3 is an array [ 1, 2, 3, 4, 5 ] 
}); 

d1.resolve(); 
d2.resolve("abc"); 
d3.resolve(1, 2, 3, 4, 5); 

В вашем случае dataA будет массив с тремя элементами:

dataA[0] -> data 
dataA[1] -> statusText 
dataA[2] -> xhr 

С этим ...

Как я могу получить его, когда с помощью JQuery. когда?

dataA[2].status

Смежные вопросы